线程的属性

线程的属性

一、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开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

原文地址:https://www.cnblogs.com/wml-it/p/14798781.html