一尘不染

如何在C#中立即杀死线程?

c#

我正在使用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都是我的全局线程。


阅读 817

收藏
2020-05-19

共1个答案

一尘不染

很难杀死一个线程的原因是因为语言设计者希望避免以下问题:您的线程需要一个锁,然后在释放它之前先杀死它。现在,任何需要该锁的人都会被卡住。

您要做的是使用一些全局变量告诉线程停止。您必须手动在线程代码中检查该全局变量,如果看到它表明您应该停止,则返回该变量。

2020-05-19