属性
|
说明
|
ApartmentState
|
获取或设置此线程的单元状态
|
CurrentContext
|
获取线程正在其中执行的当前上下文
|
CurrentThread
|
获取当前正在运行的线程
|
IsAlive
|
获取一个值,该值指示当前线程的执行状态
|
ManagedThreadId
|
获取当前托管线程的唯一标识符
|
Name
|
获取或设置线程的名称
|
Priority
|
获取或设置一个值,该值指示线程的调度优先级
|
ThreadState
|
获取一个值,该值包含当前线程的状态
|
方法
|
说明
|
Abort
|
在调用此方法的线程上引发ThreadAbortException,以开始终止此线程的过程。调用此方法通常会终止线程
|
GetApartmentState
|
返回一个ApartmentState值,该值指示单元状态
|
GetDomain
|
返回当前线程正在其中运行的当前域
|
GetDomainID
|
返回唯一的应用程序域标识符
|
Interrupt
|
中断处于WaitSleepJoin线程状态的线程
|
Join
|
阻止调用线程,直到某个线程终止时为止
|
ResetAbort
|
取消为当前线程请求的Abort
|
Resume
|
继续已挂起的线程
|
SetApartmentState
|
在线程启动前设置其单元状态
|
Sleep
|
将当前线程阻止指定的毫秒数
|
SpinWait
|
导致线程等待由iterations参数定义的时间量
|
Start
|
使线程被安排进行执行
|
Suspent
|
挂起线程,或者如果线程已挂起,则不起作用
|
VolatileRead
|
读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值
|
VolatileWrite
|
立即向字段写入一个值,以使该值对计算机中的所有处理器都可见
|
例 下面演示使用Thread类的相关方法和属性,开始运行一个线程,并获得该线程的相关信息,程序开发步骤如下。
(1)新建一个Windows应用程序,命名为TestThread,默认窗体为FormTestThread.cs。
(2)在Form1窗体中添加一个RichTextBox控件,用来显示获得的线程相关信息。
(3)程序主要代码如下。
#region "窗体加载时事件"
private void FormTestThread_Load(object sender, EventArgs e)
{
string strInfo = string.Empty; //定义一个字符串,用来记录线程相关信息
Thread myThread = new Thread(new ThreadStart(threadOut)); //实例化Thread线程类对象
myThread.Start();//启动主线程
//获取线程相关信息
strInfo = "线程唯一标识符:" + myThread.ManagedThreadId;
strInfo += "\n线程名称:" + myThread.Name;
strInfo += "\n线程状态:" + myThread.ThreadState.ToString();
strInfo += "\n线程优先级:" + myThread.Priority.ToString();
strInfo += "\n是否为后台线程:" + myThread.IsBackground;
Thread.Sleep(1000); //使主线程休眠1秒钟
myThread.Abort("退出");//通过主线程阻止新开线程
myThread.Join();//等待新开的线程结束
MessageBox.Show("线程运行结束");
richTextBox1.Text = strInfo;
}
#endregion
public void threadOut()
{
MessageBox.Show("主线程开始运行");
}
注意:在程序中使用线程时,需要在命名空间区域添加using System.Threading命名空间
运行程序,先后弹出如图1和图2所示的对话框,然后显示如图3所示主窗体,并在主窗体中显示获得的线程相关信息。
图1 线程开始运行
图2 线程运行结束
图3 主窗体