2011-03-17 33 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錯誤報告?同樣,我不熟悉「緩衝區溢出」異常;對於例外情況,請發佈異常類型,消息和完整的堆棧跟蹤。

相關問題