2010-09-21 73 views
7

我初始化一個線程的靜態線程如下圖所示STA線程中止異常

Thread GenerateKeywords; 
private void btnStart_Click(object sender, EventArgs e) 
{ 

    //Initializes the Test Thread   
    Test = new Thread(TestMethod); 

    //Sets the apartment state to Static 
    Test.SetApartmentState(ApartmentState.STA); 

    //Starts the GenerateKeywords Thread   
    Test.Start(); 
} 

,但是當我通過這種方法

private void btnStop_Click(object sender, EventArgs e) 
{ 

if (Test != null) 
     Test .Abort(); 
} 

這是給下面的異常中止這個線程: 「 mscorlib.dll中發生類型'System.Threading.ThreadAbortException'的第一次機會異常 線程0x13dc已退出,並且代碼爲0(0x0) 「

如何擺脫這個異常?

+0

它不*是一個例外,只是來自調試器的通知發現了異常。這是正常的,Thread.Abort()注入一個異常。 *不*修復這個問題。 – 2010-09-21 11:22:27

回答

2

ThreadAbort異常不應該是一個問題。未處理的ThreadAbortException是不導致應用程序關閉的兩種類型的異常之一(另一種是AppDomainUnloadException)。

包裝在一個嘗試捕捉和處理類型ThreadAbort的異常,並設置Thread.ResetAbort = true;

檢查這個link瞭解更多詳情。

3

您應該在運行線程時輪詢某些條件以便中止它。在按鈕停止處設置一些布爾變量,然後在線程方法內輪詢它以中止它。