У меня есть многопоточное приложение .NET, которое использует асинхронный ввод-вывод и AsyncCallbacks для обработки завершений ввода-вывода. В редких случаях приложение не работает с исключением, например:
Arithmetic operation resulted in an overflow.
at MyApp.ReadComplete(IAsyncResult ar) in c:\MyApp.cs:line 123
at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
at System.Net.ContextAwareResult.CompleteCallback(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.ContextAwareResult.Complete(IntPtr userToken)
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)
Строка 123 в MyApp.cs является первой исполняемой строкой AsyncCallback, и она находится внутри try / catch (исключение ex), но перехват НЕ выполняется.
.NET Framework мне лжет о том, где произошло исключение? Возникло ли исключение в асинхронном мире, где я не могу его поймать? Почему я не могу поймать это исключение?