1

將VS2010調試器用於託管代碼是否可以觸發終結器線程運行?在VS2010調試器中觸發終結器

使用案例:

使用Tasks可以在Task對象的終結拋出異常,如果任務是 自己已經拋出的異常和那些還沒有得到照顧。

驗證錯誤修正誰是一個未處理的原因可能會耗費時間,因爲您需要等待終結器線程在確定修復程序正常工作之前踢入。

我通常不會使用終結器自己編寫代碼,因爲它會導致很多頭痛,並且我也向Microsoft發送了關於此的郵件。但是,雖然它是這樣的:如何觸發終結器代碼從調試器運行而不是代碼。

回答

2

AFAIK有沒有特殊的方式來從調試器做到這一點。

你可以在你的代碼觸發它:

int i = 0, j = 1; 
    new Task(() => Console.WriteLine(j/i)).Start(); 
    Thread.Sleep(1000); // make sure it has had plenty of time 
    //GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced); 
    //GC.WaitForPendingFinalizers(); 
    Console.WriteLine("Did I explode yet?"); 
    Console.ReadKey(); 

現在取消註釋兩行看到異常出現。

注意這應該只有被用於像測試這樣的場景;您的常規代碼中不應該使用GC

+0

感謝您的回答!幫了我很多。不能接受,但。我把這段代碼放在一個只在調試期間可見的按鈕中,並且像魅力一樣工作。 – vidstige