1

我在应用程序启动时收到以下异常:

System.AccessViolationException
   at System.Threading.Overlapped.get_iocbHelper()
   at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)

这就是整个调用堆栈。它只会在应用程序启动时发生二十分之一的运行。我确实在我的套接字代码中使用了 IOCompletion。我认为它与此有关。但是,为什么我打电话时不会显示此异常Socket.ReceiveFromAsync?我有很多同时调用的套接字ReceiveFromAsync,但我不会在同一个套接字上同时调用它两次。关于原因的任何想法?

4

1 回答 1

0

在非常努力地让 IO 完成方法工作之后,我终于放弃了,只是编写了自己的线程来调用同步版本的发送和接收。从那以后我没有任何问题。

我有一些使用 IO 完成的 C++ 代码,甚至在大容量设置中,我从来没有遇到过这个问题。

所以我很清楚 IO-completion 的 C# 实现存在漏洞,它不是反恶意软件、防火墙或任何(非 Microsoft)垃圾软件。

于 2017-03-17T20:31:15.750 回答