线程的属性
一、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 代理对象,而线程的建立、管理、运行等工作都是由系统自动完成的,你无须考虑那些复杂的细节问题。
后续学习继续更新.....