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은 이와 관련하여 명확한 정보를 제공합니다.

관련 문제