zoukankan      html  css  js  c++  java
  • 线程——前台与后台

    C#中的线程分为两类:前台线程与后台线程

    后台线程——不会阻止进程结束;所有前台线程结束之后,后台线程无论执行完否都会被强制结束

    前台线程——相反就会阻止线程结束

    代码示例:

    1.1 在winform中,存在一个主界面线程,我另起一个线程作为后台线程,这里通过设置新线程的IsBackground属性来改变线程的类别

    代码
    private void Form1_Load(object sender, EventArgs e)
    {
    Thread t1
    = new Thread(new ThreadStart(Start));
    t1.IsBackground
    = true;
    t1.Start();

    }
    void Start()
    {
    while (true)
    {

    }
    }

    当我点击窗体退出按钮后,会从任务管理器中看到 该程序是否还在执行,结果如下图

    执行中:

    点击窗体退出按钮后,任务管理器中的该程序不存在。这说明当前台线程结束后,后台线程也结束啦

    1.2 不设置新线程的IsBackground属性 默认的为前台线程 我们再看一下他的执行过程

    代码
    private void Form1_Load(object sender, EventArgs e)
    {
    Thread t1
    = new Thread(new ThreadStart(Start));
    // t1.IsBackground = true;
    t1.Start();

    }
    void Start()
    {
    while (true)
    {

    }
    }

    你会发现当你单击了窗体的退出按钮后,任务管理器中该应用程序仍然在运行,也就是说该程序没有结束。导致这一结果的原因就是存在一个前台线程没有结束。

    从这里你就会发现前台和后台线程的区别,应该是会根据实际情况去使用这两种线程了吧

  • 相关阅读:
    Vue数据双向绑定原理
    JS递归
    JS数据结构-链表
    JS数据结构-树
    React性能优化手段
    Django请求的生命周期
    Devops-git初识
    Django数据迁移的问题
    无监控,不运维!运维监控工具平台建设总结
    数据库-数据类型及主键外键
  • 原文地址:https://www.cnblogs.com/ATually/p/1854313.html
Copyright © 2011-2022 走看看