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

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

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

C#程序关闭时怎么关闭子线程相关推荐

  1. 转 点击关闭时最小化到任务栏

    来源:http://www.2cto.com/kf/201401/274489.html 现在很多软件如360杀毒软件.酷狗音乐都拥有最小化至任务栏并在系统托盘区留下图标,我的项目同样需要该功能.所以 ...

  2. Impersonate让你的子线程也具有主线程的执行权限

    系统部署在某些复杂的网络环境中,对权限的控制较为严格,无法给IIS用户授予更多的权限,而有些操作(比如对数据库的操作)又必须拥有权限才能成功. ASP.NET在后台使用多线程进行数据处理时,主线程可以 ...

  3. c++主线程和子线程

    c++主线程和子线程 最近在学习c++多线程,写一篇博客记录下自己的收获. 一.main()函数是主线程函数,在main()函数中创建的线程属于子线程,那主线程和子线程的优先级谁更高呢? 可以看下另外 ...

  4. Android的主线程与子线程

    在上一篇文章Android的进程.线程与优先级中我们提到: 线程(thread):是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.一个进程至少对应一个线程. CP ...

  5. java父线程子线程

    问:在父线程中New了一个子线程,想在停止父线程时也停止子线程,应该怎么做? 答: 从某种程度上讲,做不到.    不管是父线程还是子线程,这只不过是在运行时谁建了谁时用的,一旦所谓的字线程被启动,这 ...

  6. C#子线程中更新ui

    本文实例总结了C#子线程更新UI控件的方法,对于桌面应用程序设计的UI界面控制来说非常有实用价值.分享给大家供大家参考之用.具体分析如下: 一般在winform C/S程序中经常会在子线程中更新控件的 ...

  7. java 事务管理 子父线程_java父线程子线程(转)

    问:在父线程中New了一个子线程,想在停止父线程时也停止子线程,应该怎么做? 答: 从某种程度上讲,做不到. 不管是父线程还是子线程,这只不过是在运行时谁建了谁时用的,一旦所谓的字线程被启动,这两个线 ...

  8. java 不退出_Java项目不挂断运行,即当账户退出或终端关闭时,程序仍然运行,并附上执行脚本...

    把打包好的jar包上传服务器以后,直接运行java -jar+文件名 命令即可以完成启动. 若需要在公网上如何不挂断开启程序,可以使用nohup java -jar +文件名 &命令,其中no ...

  9. windows 7 如何关闭 程序崩溃时弹出的windows正在检查该问题的解决方案

    如果你装的镜像一般不会出现这个问题,因为已经被优化了. 原版的会有这个问题,仅作备份! 尊重原创,原文链接点这里 非常讨厌的东西,每当程序崩溃时,总爱假惺惺的弹出一个对话框 滚上几圈就没有下文了. 尤 ...

  10. java菜单面板设置完能关闭_用Java创建一个屏幕外框架(或者:当所有应用程序窗口关闭时,如何避免Mac上的空白菜单)?...

    你一定要考虑WizardOfOdds非常有用的答案.正确使用 "The Application Menu"将有所帮助,并且很容易设置最小的 Info.plist开始.持久的文件菜单 ...

最新文章

  1. 《数学之美》第9章 图论和网络爬虫
  2. Hanlp在java中文分词中的使用介绍
  3. ipconfig不是内部或外部_OSPF外部路由详解-LSA4-LSA5
  4. netty源码分析系列——Channel
  5. 安装了Node.js 从VScode 使用node -v 和 npm -v等命令却无效
  6. 笨办法学 Python · 续 第四部分:进阶项目
  7. html如何实现表格效果,DIV+CSS技术实现类似table表格的效果
  8. 魅族技术晚场回顾,算法、架构、AI之外,还要考虑未来
  9. python把工作簿拆分为工作表_python利用openpyxl拆分多个工作表的工作簿的方法
  10. 完全卸载惠普打印机驱动程序方法搜集(未验证)
  11. 错误 LNK2005 xxx已经在 xxx.obj 中定义
  12. vue和element框架搭配实现导航条跳转,点击按钮跳转页面导航条也跟着变换
  13. B. Ternary Sequence
  14. php生成云图,教程:用Python生成词云图
  15. 百数谐韵咏物千字文全文释义
  16. 什么是大数据? 大数据有哪些应用场景?
  17. 支持HEVC/H265 RTMP播放的VLC WINDOWS版本
  18. pytorch的训练测试流程总结,以及model.evel(), model.train(),torch.no_grad()作用
  19. Python:游戏:测试打字速度
  20. Deepin Linux v20+安装微信3.1.2最新测试版的方法

热门文章

  1. HDOJ 2013 蟠桃记
  2. 利用bloom filter算法处理大规模数据过滤
  3. spring-AspectJ异常通知
  4. Script:列出Oracle每小时的redo重做日志产生量
  5. 谈天津地铁之为民服务
  6. 每日记载内容总结46
  7. actor对自己不可见
  8. DisplayUtils
  9. Redis 学习之事务处理
  10. 第一个python程序-判断登陆用户名和密码是否正确