STA线程中止异常

时间:2010-09-21 10:18:11

标签: c# multithreading

我正在将线程初始化为静态线程,如下所示

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)。 “

如何摆脱这种异常?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

ThreadAbort异常应该不是问题。未处理的ThreadAbortException是仅导致应用程序关闭的两种异常类型之一(另一种是AppDomainUnloadException)。

将其包装在try catch中并处理ThreadAbort类型的异常并设置Thread.ResetAbort = true;

查看此link了解详情。