【问题标题】:STA thread Abort ExceptionSTA 线程中止异常
【发布时间】:2011-04-15 03:08:45
【问题描述】:

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

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() 注入异常。不要不要解决这个问题。

标签: c# multithreading


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    查看link了解更多详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      相关资源
      最近更新 更多