2011-03-17 34 views
1

当我们在外部调用Thread.Abort()时,我们有一个线程,因为我们有一些清理工作需要执行ThreadAbortException 。特别要求互斥体。当在Visual Studio以外的调试模式下运行应用程序时,这会崩溃,但在Visual Studio中托管时,所有运行正常。我听说垃圾收集器在托管时与不托管时运行方式不同。这可能与线程有关吗?抛出的错误是缓冲区溢出。当运行Visual Studio中托管的调试应用程序时直接运行它与调用应用程序时的Thread.Abort()

谢谢!

+0

究竟是什么“崩溃”? – 2011-03-17 19:55:01

+0

我们不知道,我们收集的调用堆栈都在Microsoft DLL中,我们无法计算出所有线程的确切上下文。 – Ssebu 2011-03-17 20:02:58

+0

这个线程的目的实际上是收集人们对连接到调试器时运行的不同点的评论。 – Ssebu 2011-03-17 20:03:31

回答

0

正如亨克已经指出的,不要拨打Thread.Abort。永远。

我有一些信息on my blog关于垃圾收集器如何在不同情况下工作不同。不过,我相信GC对于在调试器中运行调试版本是相同的。

如果您想回答其他问题,则需要发布更多信息。 “坠毁”不是一个描述性术语;应用程序突然退出,还是弹出一个你写的对话框,或者打开Windows错误报告?同样,我不熟悉“缓冲区溢出”异常;对于例外情况,请发布异常类型,消息和完整的堆栈跟踪。

相关问题