STA线程中止异常

7
我将线程初始化为静态线程,如下所示:

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

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

如何消除此异常?


这不是一个异常,只是调试器检测到异常并发出的通知。这是很正常的,Thread.Abort()注入了一个异常。请不要修复它。 - Hans Passant
2个回答

3

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


2

ThreadAbort Exception(线程中止异常)不应该成为问题。未处理的 ThreadAbortException 是只有两种类型的异常之一,不会导致应用程序关闭(另一种是 AppDomainUnloadException)。

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

查看此链接以获取更多详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接