博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#程序关闭时怎么关闭子线程
阅读量:5094 次
发布时间:2019-06-13

本文共 961 字,大约阅读时间需要 3 分钟。

一、在实际编码中会遇到这种问题:

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

  但是任务管理器中,主程序进程还在运行(在等子线程结束,而子线程做成了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

转载于:https://www.cnblogs.com/qvbrgw/p/4733455.html

你可能感兴趣的文章
SharePoint 2013 地址栏_layouts/15/start.aspx#
查看>>
Redis监控工具redis-stat安装基本步骤
查看>>
[ZZ]** WARNING ** Mnesia is overloaded: {dump_log, write_threshold}
查看>>
禁止横纵向滚动条
查看>>
C#综合揭秘——细说进程、应用程序域与上下文之间的关系 (转自:风尘浪子)...
查看>>
视错觉:从一个看似简单的自定义控件说起
查看>>
获取千牛聊天对象(聊天记录中获取)
查看>>
GridView不換行
查看>>
Map在内存中的结构
查看>>
前端(HTML/CSS/JS)-HTML编码规范
查看>>
C#判断操作系统的位数
查看>>
项目管理之代码合并
查看>>
[插件]使用juery-ui插件拖拽盒子后,盒子不见了
查看>>
impala系列: 字符串函数
查看>>
基础知识点(一)
查看>>
T-SQL查询处理详解 (续)
查看>>
参数转换器执行流程
查看>>
实验七——函数定义及调用总结
查看>>
高性能的网络游戏服务器的设计。。。作者谈了QQGAME SERVER。。。 (转)
查看>>
原生 javascript 学习之 js变量
查看>>