2010-09-21 74 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

您应该在运行线程时轮询某些条件以便中止它。在按钮停止处设置一些布尔变量,然后在线程方法内轮询它以中止它。