PerformIOCompletionCallback中未处理的IOException

时间:2011-12-09 10:28:14

标签: .net asynchronous winsock ioexception unhandled-exception

在停止进程时,我发现了AppDomain.UnhandledException事件的以下异常。 Windows 7上的最新.NET 4.0。

IsTerminating flag:True
Unhandled exception: System.IO.IOException: The handle is invalid

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.Threading.EventWaitHandle.Set()
   at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)
   at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
   at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)

任何人都知道是什么原因造成的?

1 个答案:

答案 0 :(得分:0)

如果在存在未完成的异步IO操作时放置了套接字,则可能会发生PerformIOCompletionCallback中的未处理异常。
一旦操作完成,它将尝试访问已设置的套接字的成员,这不能很好地播放。

在此异常期间创建的内存转储可以为此提供一些启示。 This blog post应该有助于在这方面做好准备。