2011-12-09 27 views
2

プロセスを停止している間に、AppDomain.UnhandledExceptionイベントで次の例外が発生しました。 Windows 7の最新の.NET 4.0。PerformIOCompletionCallbackの未処理IOException

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) 

誰でもこの原因を知っていますか?

+0

無効なハンドルが原因です。 「プロセスの停止」が何を意味しているかを注意深く記述することによって、コメントを避けてください。 –

+0

訂正:ログの再解析により、シャットダウンシーケンス中ではなく、青色から多かれ少なかれ発生したことが示されます。 私はそれが広い質問であることを知っています。私が見つけようとしているのは、どのような種類のイベントがこの例外を引き起こすかということです。たとえば、このプロセスの内部に何かがある必要がありますか? – Josh

+0

ハンドルリークのためにプロセスがハンドルの割当てを消費すると、この種の問題が発生する可能性があります。 TaskMgr.exeの[プロセス]タブに表示されます。表示+列を選択し、ハンドルをチェックします。 –

答えて

0

未処理の非同期IO操作が行われている間にソケットが廃棄された場合は、未処理の例外PerformIOCompletionCallbackが発生する可能性があります。
操作が完了すると、配置されたソケットのメンバーにアクセスしようとします。これは、うまくプレイする気分ではありません。

この例外の間に作成されたメモリダンプは、ここでいくつかの光を放つことができます。 This blog postはこの点を明確にするのに役立ちます。