在C#中停止正在运行的线程时发生异常

时间:2018-10-04 12:20:28

标签: c# multithreading exception-handling

我的应用程序中有一个名为“ FirstThread”的线程,该线程在后台运行。尝试使用“ FirstThread.Abort()”停止正在运行的线程时,它返回异常。您可以为此建议任何解决方案

 if (FirstThread.ThreadState == System.Threading.ThreadState.Running)
     FirstThread.Abort();

enter image description here

2 个答案:

答案 0 :(得分:-1)

中止线程是一个坏主意,也是一个坏习惯,因为它可能导致许多错误。无需执行此操作,请确保您需要一个线程并准确定义其必须执行的操作,而无需执行其他任何操作。同样,您可以实现一个线程工作程序来处理您的线程。

如果您仍然不相信Thread.Abort()是一个坏主意,则可以将异常封装在try-catch块中:

try {
     Thread.Abort();
}
catch { //DO NOTHING }

但我不建议这样做。

答案 1 :(得分:-1)

通常为了避免这些异常,我使用标志。您可以创建一个名为stopFirstThread的标志,而不是中止将标志值设置为True的线程,并且在第一个线程内部继续检查该标志,当它变为True时,您可以结束线程和平地。