• c# 前台线程 后台线程


    参考地址

     新建的子线程可以是前台线程或者后台线程,前台线程必须全部执行完,即使主线程关闭掉,这时进程仍然存活。后台线程在未执行完成时,如果前台线程关掉,则后台线程也会停掉,且不抛出异常。也就是说,前台线程与后台线程唯一的区别是后台线程不会阻止进程终止。可以在任何时候将前台线程修改为后台线程。

     在C#中,Thread类默认创建的是前台线程,通过线程池(后面会讲到)创建的线程都是后台线程。

    一定要注意的是比如说一个控制台程序,如下

    static void Main(string[] args)
    {
        //后台线程不阻止主线程的关闭
        Thread th = new Thread(delegate()
        {
            Thread.Sleep(6000);
        //创建一个测试文件夹
          Directory.CreateDirectory(@"D:TESTS测试");
    
        });
        th.IsBackground = true;
        th.Start();
    
        Console.WriteLine("main thread end");
    }

    这时候是创建不了的,因为6秒还没过,Main方法就走完了,线程th是后台线程,无法阻止主线程这个前台线程,所以导致整个进程关闭了,自然子线程的方法就执行不了了。一定要注意在控制台中是这样的,因为走完Main方法控制台程序自然就关闭了,整个进程自动终止了。如果是MVC,winform这样的话走完Main整个程序是不会自动关闭的,th这个后台线程在等待6秒后是会接着执行的。一定不要弄混了。如果th设置成前台线程,只有子线程th执行完毕之后整个控制台程序才会关闭。

  • 相关阅读:
    20165222第八周课上补做
    20165222—第八周学习
    20165222《Java程序设计》——实验二 面向对象程序设计
    20165222 结对编程学习
    20165222 第七周学习总结
    20165222 第六周学习总结
    20165222 实验一java开发环境的熟悉
    20165222 第五周学习总结
    JSP
    Servlet
  • 原文地址:https://www.cnblogs.com/anjingdian/p/15311112.html
Copyright © 2020-2023  润新知