【发布时间】:2010-11-22 13:30:28
【问题描述】:
我正在使用thread.Abort 方法杀死线程,但它不起作用。有没有其他方法可以终止线程?
private void button1_Click(object sender, EventArgs e)
{
if (Receiver.IsAlive == true)
{
MessageBox.Show("Alive");
Receiver.Abort();
}
else
{
MessageBox.Show("Dead");
Receiver.Start();
}
}
我正在使用它,但每次获得Alive 状态时,Receiver 都是我的全局线程。
【问题讨论】:
-
危险,威尔罗宾逊,危险! 非常不要使用 Thread.Abort - 几乎总是一个坏主意。
-
那应该用什么来杀死线程呢?
-
要求线程停止,从那一刻起忽略线程。
-
如果您绝对必须将其关闭一个运行任意的、可能对被删除的代码怀有敌意的线程,那么唯一合理安全且有效的方法就是隔离该线程线程进入自己的进程。无法保证线程中止会成功,但您应该能够取消进程。
-
要添加到这个(旧)问题的 cmets,这里是一个相关的(旧)问题:“What's wrong with using Thread.Abort()”。
标签: c# winforms multithreading