zoukankan      html  css  js  c++  java
  • C#程序关闭时怎么关闭子线程

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

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

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

  • 相关阅读:
    python 将字符串作为脚本运行
    Django Model获取字段名称并转为List存储
    django 过滤查询
    django 视图中异步执行python脚本
    python 异步执行python脚本
    django 筛选不等于的内容
    phpstorm中快速添加函数注释
    搜索模板elasticsearch
    laravel模型关联
    laravel关联用户
  • 原文地址:https://www.cnblogs.com/qvbrgw/p/4733455.html
Copyright © 2011-2022 走看看