为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
aluckdog 2019-11-18 12:59:46
我正在使用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都是我的全局线程。
查看完整描述

3 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您可以通过这种方式立即杀死它:


private Thread _myThread = new Thread(SomeThreadMethod);


private void SomeThreadMethod()

{

   // do whatever you want

}


[SecurityPermissionAttribute(SecurityAction.Demand, ControlThread = true)]

private void KillTheThread()

{

   _myThread.Abort();

}

我一直使用它并为我工作:)


查看完整回答
反对 回复 2019-11-18
?
精慕HU

TA贡献1845条经验 获得超8个赞

首先,您应该具有一些同意的结束线程的方法。例如,线程可以检查并遵守的running_ valiable。


您的主线程代码应该包装在一个异常块中,该异常块同时捕获ThreadInterruptException和ThreadAbortException,这将在退出时彻底整理线程。


如果是ThreadInterruptException,则可以检查running_变量以查看是否应该继续。如果是ThreadAbortException,则应立即整理并退出线程过程。


试图停止线程的代码应执行以下操作:


running_ = false;

threadInstance_.Interrupt();

if(!threadInstance_.Join(2000)) { // or an agreed resonable time

   threadInstance_.Abort();

}


查看完整回答
反对 回复 2019-11-18
  • 3 回答
  • 0 关注
  • 1237 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信