【发布时间】:2013-01-25 05:25:11
【问题描述】:
我正在开发一个客户端/服务器应用程序作为我论文的一部分,并选择使用SocketAsyncEventArgs 来获得网络操作方面的最大性能。今天下午,我决定对创建 20 个线程并每个线程发送 100,000 条 UDP 消息的应用程序进行快速而肮脏的压力测试。在应用程序快结束时出现以下异常:
如何查找异常原因?或者有没有人知道为什么它会在一个看似随机的地方摔倒?
我相信大部分时间我都可以重新制作,并且很乐意在必要时提供代码。
更新:
我在 .Net 4.0 版上运行了完全相同的代码,没有出现错误。据我所知,这似乎是 .Net 4.5/Compliers/Jit 的问题。任何关于如何缩小例外范围的想法将不胜感激。
【问题讨论】:
-
我确实看到了@HansPassant,但每次都在同一个地方,但错误代码与 dup 中显示的错误代码不同。感谢您的链接
-
您是否检查过您的应用程序是线程安全的?!也许你做了一些 ipc 并没有实现一个好的回调方法......?!请告诉我更多关于您的应用程序将如何清理线程、线程之间应该通信的信息以及如果是这样,您认为如何做到这一点的更多信息。顺便提一句。你使用一些本机(不安全)代码部分,还是一些 COM 部分(如 activeX-lib)?问候,我
-
@NicoSöllinger 我认为它在很大程度上是线程安全的。目前整个代码库都在使用
SocketAsyncEventArgs和xxxxAsync方法。因此,我假设线程是代表我清理的。虽然我使用Semaphore和lock(){}来管理Stack的资源,但没有其他组件,例如com。 -
@HansPassant 我已将范围缩小到 .Net 4.5 的问题。该代码在 .Net 4.0 上运行良好。关于如何从这里找到原因的任何想法?
标签: c# exception fatal-error