创建一个线程使用Thread类,构造函数接受两类委托,ThreadStart委托无参数,返回void,ParameterizedThreadStart委托有一个Object参数,返回void。Thread对象调用new创建之后,可以调用Start启动线程,如果构造函数参数为无参数的委托则Start方法不需要传入参数,否则Start方法需要传入对象引用,此对象引用会作为参数传递给ParameterizedThreadStart委托,有参数委托可以用来给线程传递数据,除此之外,给线程传递数据还可以通过传递对象实例方法给Thread构造函数创建Thread对象,这样数据可以封装在对象实例中供对象实例方法调用。
可以设置Thread.Name属性更改线程的名字用以调试以及Trace。
创建的Thread对象默认为前台线程,可以通过设置Thread.IsBackground属性为true将线程更改为后台线程(IsBackground属性默认为false)。
Thread对象默认优先级为普通优先级别(Normal),可以通过更改Thread.Priority属性为ThreadPriority枚举值(Highest,AboveNormal,Normal,BelowNormal,Lowest)改变线程优先级。
可以调用Thread.Abort方法停止一个线程,对象线程会抛出ThreadAbortException,捕捉此异常可以在退出之前释放一些资源,也可以调用Thread.ResetAbort方法忽略停止请求而继续运行。
调用Thread.Join阻塞等待对象线程退出。
ThreadPool对象内置提供了线程池功能,调用ThreadPool.QueueUserWorkItem传递WaitCallback委托加入到ThreadPool的调度任务。ThreadPool会动态维护线程池中的线程数,用以调度运行请求的任务。ThreadPool中的线程均为后台线程,而且不能设置线程的优先级以及名字,因此最好用ThreadPool调度完成一些耗时少,很快就能完成的任务操作。