פורסם 2008 ביולי 3117 שנים אני נסיתי לקשר בין HANDLE של SOCKET לIOCP ושאני בודק אם זה הצליח זה אומר שזה הצליח לעשות את זהאבל שהקליינט שולח מידע לא קורה כלום שאני קורא לפונקציה GetQueuedCompletionStatus היא לא מחזירה כלום כיאלו שום דבר לא נשלחככה אני מקשר:public void BindHandle(IntPtr hFile,int dwCompletionPort) { uint h; unsafe{ h = NativeMethods.CreateIoCompletionPort((uint)hFile, m_IOCPHandle, (uint*)dwCompletionPort,0); } if (h != m_IOCPHandle) throw new Exception("Cannot Bind this handle"); }וזה הפונקציה של התרד:private void IOCPFunction() { bool CompletionStatus; Int32 iValue=0; UInt32 size = 0; try { while (!m_bDisposed) { unsafe { OVERLAPPED* overLapped; CompletionStatus = NativeMethods.GetQueuedCompletionStatus(m_IOCPHandle, &size, (uint*)&iValue, &overLapped, NativeMethods.INIFINITE); if (iValue == NativeMethods.SHUTDOWN_IOCPTHREAD) { Interlocked.Decrement(ref m_iActiveThreads); break; } try { OnIOCP(iValue); } catch(Exception ex) { throw ex; } } } } catch(Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } }האם אני עושה משהו לא נכון?
פורסם 2008 ביולי 3117 שנים המימוש הפנימי של BeginXXX ב Sockets לא מספיק טוב לך (הוא משתמש ב IOCP בצורה כלשהי מובנית)?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.