zoukankan      html  css  js  c++  java
  • 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执行完毕之后整个控制台程序才会关闭。

  • 相关阅读:
    案例的法律分析
    被投资人“送”入看守所 z
    easyUI样式之easyui-switchbutton
    阿里大于发送短信(java)
    java Random.nextInt()方法
    DateFormatUtil格式化时间
    MessageFormat.format 字符串的模板替换
    JsonArray对象
    jsonObject关于xml,json,bean之间的转换关系
    Java 使用IE浏览器下载文件,文件名乱码问题
  • 原文地址:https://www.cnblogs.com/anjingdian/p/15311112.html
Copyright © 2011-2022 走看看