【发布时间】:2014-08-21 18:07:29
【问题描述】:
应用程序启动时出现以下异常:
System.AccessViolationException
at System.Threading.Overlapped.get_iocbHelper()
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
这就是整个调用堆栈。它只会在应用程序启动时发生二十分之一的运行。我确实在我的套接字代码中使用了 IOCompletion。我认为它与此有关。但是,为什么当我调用Socket.ReceiveFromAsync 时不会显示此异常?我有很多套接字同时调用ReceiveFromAsync,但我不会同时在同一个套接字上调用它两次。关于原因的任何想法?
【问题讨论】:
-
这是一个开始.. 如果我们看不到正在调用的内容和/或您正在使用的特定调用,并且
Tasks()也基于此行,则发布相关代码调用堆栈在这一点上毫无意义at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)我几乎可以猜到这是POINTER问题 -
这个项目是什么版本的.net框架..
2.0, 3.5, 4.0..?? -
这是带有 VS2012 的 .NET 4.5.0。我不知道在没有附加调试器的情况下会发生此错误,但我有点怀疑。
-
此代码在传输完成时运行,就在调用 Completed 事件处理程序之前。这是一个环境问题,你需要让你的机器再次稳定。从想要参与网络、反恶意软件、防火墙的常规垃圾软件列表开始。
标签: c# sockets io-completion-ports