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

  • 相关阅读:
    如何修改mysql root密码
    【STL】list基础(转)
    时间控制timer settimeout setinterval
    刷新ArrayCollection的显示控件
    需要科普的网站
    flex 拖拽数据
    常用的资源网站
    as3 性能优化
    对象池
    Bitmap与Bitmapdata
  • 原文地址:https://www.cnblogs.com/wml-it/p/14798781.html
Copyright © 2011-2022 走看看