【发布时间】:2011-07-17 16:41:29
【问题描述】:
我们有一个线程,当我们在外部调用 Thread.Abort() 时,会捕获 ThreadAbortException,因为我们需要进行一些清理工作。特别是,需要一个互斥锁。在 Visual Studio 之外以调试模式运行应用程序时会崩溃,但在 Visual Studio 中托管时,一切运行正常。我听说垃圾收集器在托管和不托管时运行不同。这可能与线程有关吗?抛出的错误是缓冲区溢出。
谢谢!
【问题讨论】:
-
我们不知道,我们收集的调用堆栈都在 Microsoft DLL 中,我们无法确定所有线程的确切上下文。
-
这个帖子的真正目的是收集人们的 cmets,了解在附加到调试器时运行时的区别。
-
强制说明:您根本不应该使用
Thread.Abort()。这是一个讨厌的野兽,每个人都不建议,包括 MSDN -
@Ssebu - 如果问题的重点是询问差异,您应该问这个问题。如果您需要有关特定问题的帮助,请提供有关您的问题的更多信息。哪些 dll 中有错误,堆栈跟踪是什么,repro 是否始终稳定且一致?
-
缓冲区溢出?这需要异常的堆栈跟踪来诊断,您必须发布它。启用非托管代码调试和 Microsoft 符号服务器。
标签: .net multithreading mutex