如何在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都是我的全局线程。


aluckdog
浏览 1249回答 3
3回答

动漫人物

您可以通过这种方式立即杀死它:private Thread _myThread = new Thread(SomeThreadMethod);private void SomeThreadMethod(){   // do whatever you want}[SecurityPermissionAttribute(SecurityAction.Demand, ControlThread = true)]private void KillTheThread(){   _myThread.Abort();}我一直使用它并为我工作:)

精慕HU

首先,您应该具有一些同意的结束线程的方法。例如,线程可以检查并遵守的running_ valiable。您的主线程代码应该包装在一个异常块中,该异常块同时捕获ThreadInterruptException和ThreadAbortException,这将在退出时彻底整理线程。如果是ThreadInterruptException,则可以检查running_变量以查看是否应该继续。如果是ThreadAbortException,则应立即整理并退出线程过程。试图停止线程的代码应执行以下操作:running_ = false;threadInstance_.Interrupt();if(!threadInstance_.Join(2000)) { // or an agreed resonable time   threadInstance_.Abort();}
打开App,查看更多内容
随时随地看视频慕课网APP