我正在将线程初始化为静态线程,如下所示
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 :(得分:3)
你应该在运行一个线程时轮询一些条件以便中止它。在按钮停止时设置一些布尔变量然后在线程方法中轮询它以中止它。
答案 1 :(得分:2)
ThreadAbort异常应该不是问题。未处理的ThreadAbortException是仅导致应用程序关闭的两种异常类型之一(另一种是AppDomainUnloadException)。
将其包装在try catch中并处理ThreadAbort类型的异常并设置Thread.ResetAbort = true;
查看此link了解详情。