您的位置:首页 > 编程语言 > C#

C#程序关闭时怎么关闭子线程

2015-08-16 00:34 459 查看
一、在实际编码中会遇到这种问题:

  在客户关闭程序时,主线程直接关闭,不考虑子线程。

  但是任务管理器中,主程序进程还在运行(在等子线程结束,而子线程做成了while(1)等情况)

二、在主线程关闭处理时,首先关闭子线程。

  类似代码如下:

private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
if (flowThread != null && flowThread.isAlive)
flowThread.Abort();

this.Dispose();
}


但是会遇到主程序关不掉,类似于死机的状态

三、在程序启动时强制停止同名进程

Process[] processes = System.Diagnostics.Process.GetProcesses(); //获得所有进程
foreach (Process p in processes)
{
if (p.ProcessName == "WaterMonitorIS_Weiding" && p.StartTime < DateTime.Now.AddMinutes(-2))
{
p.Kill();
}
}


四、把线程赋值为null

private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
flowThread = null;
this.Dispose();
}


五、逼格最高的版本,使用Thread对象的一个IsBackground属性,设置为true即可,在主线程关闭时,子线程随之关闭,速度很快。

flowThread.IsBackground = true;


参考博文:http://blog.csdn.net/effectiveagui/article/details/7841792
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: