zoukankan      html  css  js  c++  java
  • 线程的属性

    线程的属性

    一、IsBackground

    C#中线程分为前台线程和后台线程:线程创建时不做设置默认是前台线程。即线程属性 

      IsBackground=false;
      Thread.IsBackground = false;//false:设置为前台线程,系统默认为前台线程。 

    前台线程和后台线程区别:应用程序必须运行完所有的前台线程才可以退出,只要有一个前台线程未退出,进程就不会终止!即说的就是程序不会关闭!(即在资源管理器中可以看到进程未结束);而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后台线程在应用程序退出时都会自动结束。
    线程是寄托在进程上的,进程都结束了,线程也就不复存在了!

    二、Threadpool

    采用多线程中最首先得一个问题就是线程的管理。C#中通过Threadpool类来提供一个有系统维护的线程池。在使用同时,我们需要用ThreadPool.QueueUserWorkItem() 将线程添加到线程池中。它的函数原型如下:

       // 将一个线程放进线程池,该线程的 Start() 方法将调用 WaitCallback 代理对象代表的函数 
        public static bool QueueUserWorkItem(WaitCallback);
        // 重载的方法如下,参数 object 将传递给 WaitCallback 所代表的方法 
        public static bool QueueUserWorkItem(WaitCallback, object); 

    注意:因为ThreadPool 类是一个静态类,所以生成它的对象。在整个过程中无需自己建立线程,只需把要做的工作写成函数,然后作为参数传递给ThreadPool.QueueUserWorkItem()方法就行了,传递的方法就是依靠 WaitCallback 代理对象,而线程的建立、管理、运行等工作都是由系统自动完成的,你无须考虑那些复杂的细节问题。

    后续学习继续更新..... 


    技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
    我创建了一个.NET开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    Neko's loop HDU-6444(网络赛1007)
    Parameters
    SETLOCAL
    RD / RMDIR Command
    devenv 命令用法
    Cannot determine the location of the VS Common Tools folder.
    'DEVENV' is not recognized as an internal or external command,
    How to change Visual Studio default environment setting
    error signing assembly unknown error
    What is the Xcopy Command?:
  • 原文地址:https://www.cnblogs.com/wml-it/p/14798781.html
Copyright © 2011-2022 走看看