עבור לתוכן

בעיה עם IOCP ב C#

Featured Replies

פורסם

אני נסיתי לקשר בין 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());
}
}

האם אני עושה משהו לא נכון?

פורסם

המימוש הפנימי של BeginXXX ב Sockets לא מספיק טוב לך (הוא משתמש ב IOCP בצורה כלשהי מובנית)?

פורסם
  • מחבר

לא

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים