Thread线程类
来源:互联网 发布:俄罗斯方块 源码分析 编辑:程序博客网 时间:2024/06/05 13:27
Thread类主要用于创建并控制线程、设置线程优先级并获取其状态。一个进程可以创建一个或多个线程以执行与该进程关联的部分程序代码,线程执行的程序代码由ThreadStart委托或ParameterizedThreadStart委托指定。
线程运行期间,不同的时刻会表现为不同的状态,但它总是处于由ThreadState定义的一个或多个状态中。用户可以通过使用ThreadPriority枚举为线程定义优先级,但不能保证操作系统会接受该优先级。
Thread类的常用属性及说明如表1所示。
表1 Thread类的常用属性及说明
属性
说明
ApartmentState
获取或设置此线程的单元状态
CurrentContext
获取线程正在其中执行的当前上下文
CurrentThread
获取当前正在运行的线程
IsAlive
获取一个值,该值指示当前线程的执行状态
ManagedThreadId
获取当前托管线程的唯一标识符
Name
获取或设置线程的名称
Priority
获取或设置一个值,该值指示线程的调度优先级
ThreadState
获取一个值,该值包含当前线程的状态
Thread类的常用方法及说明如表2所示。
表2 Thread类的常用方法及说明
方法
说明
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 主窗体
- Thread线程类
- Thread线程类
- Thread线程类
- Thread线程类
- Thread线程类
- 【c++】线程thread类
- Java线程Thread类
- Thread 线程类
- Thread类创建线程
- C#线程类Thread初步
- C#线程类Thread初步
- C#线程类Thread初步
- C#线程类Thread初步
- C#线程类Thread初步
- C#线程类Thread初步
- 用Thread类创建线程
- 线程(Thread类,Runnable接口)
- Delphi中的线程类Thread
- Thread线程类
- mt.exe : general error c101008d: Failed to write the updated manifest ...
- Thread线程类
- Thread线程类
- Thread线程类
- Thread线程类
- 堆排序
- 怎么查看sql server日志中的内容
- 增量备份和累积备份包括0,1,2,3,4,5五个备份级别
- 创建线程
- 线程的挂起与恢复
- 线程同步
- 自己的小计划
- 利用递归算法遍历所有文件并打印文件绝对路径(包括文件夹)