• 线程——前台与后台


    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)
    {

    }
    }

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

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

  • 相关阅读:
    HDOJ线段树专题(A Simple Problem with Integers)
    COJ1183(计算表达式的值)
    理解匈牙利算法求二分匹配
    COJ1143(走迷宫)
    COJ1184格林布的地雷
    POJ2387(Til the Cows Come Home)
    POJ3264(Balanced Lineup)
    调用android手机微博客户端发送微博
    用位来保存信息
    为什么类的成员变量是自身类型时只可以声明
  • 原文地址:https://www.cnblogs.com/ATually/p/1854313.html
Copyright © 2020-2023  润新知