VisualC#中编写多线程程序之起步
。net以系统的名义定义了多线程的功能。线程空。因此,要使用多线程,必须先声明对名称空(使用System。穿线;)。
即使你没有编写多线程应用的经验,你也可能听过“启动线程”和“杀死线程”这两个词。其实除了这两个字,还有其他跟多线程相关的东西,比如“挂起线程”、“优先级”、“挂起线程”、“恢复线程”。下面将一一解释。
A.开始线程
顾名思义,“启动一个线程”就是创建一个新线程并启动它。可以实现以下代码:
Thread Thread 1 = new Thread(new ThreadStart(Count));
其中Count of是新线程要执行的函数。
B.切断线
“杀死一根线”意味着消灭一根线。为了不白费力气,在杀死一个线程之前,先判断它是否还活着(通过IsAlive属性),然后就可以调用Abort方法杀死这个线程了。
C.暂停线程
意思是让一个正在运行的线程休眠一段时间。比如螺纹。睡眠(1000);就是让线程休眠1秒钟。
D.优先
这个没必要解释。Thread类中有一个ThreadPriority属性,用于设置优先级,但不能保证操作系统会接受优先级。线程的优先级可以分为五种:正常、高于正常、低于正常、最高、最低。具体实现示例如下:
线程。优先级=线程优先级。最高;
E.挂起线程
Thread类的Suspend方法用于挂起线程,线程可以继续执行,直到调用Resume。如果线程已经挂起,它就不会工作。
如果(线程。ThreadState = ThreadState。正在运行)
{
线程。挂起();
}
F.恢复线程
用于恢复挂起的线程,以便它可以继续执行。如果线程没有被挂起,它将无法工作。
如果(线程。ThreadState = ThreadState。挂起)
{
线程。resume();
}
下面将列出一个例子来说明简单的线程处理功能。此示例来自帮助文档。
使用系统;
使用系统。穿线;
//简单线程场景:在第二个线程上启动运行
//的静态方法。
公共类ThreadExample {
//线程启动时调用ThreadProc方法。
//循环十次,每次写入控制台并产出
//其剩余的时间片,然后结束。
public static void thread proc(){
for(int I = 0;i < 10i++) {
控制台。WriteLine("ThreadProc: {0} ",I);
//产生剩余的时间片。
线程。睡眠(0);
}
}
public static void Main() {
控制台。WriteLine("主线程:启动第二个线程。");
// thread类的构造函数需要一个ThreadStart
//委托,该委托表示要在
//线程上执行的方法。C#简化了此委托的创建。
Thread t = new Thread(new ThreadStart(Thread proc));
//启动ThreadProc。在单处理器上,在主线程让步之前,线程不会获得
//任何处理器时间。取消对
//线程的注释。跟在t.Start()后面的Sleep来看区别。
t . Start();
//线程。睡眠(0);
for(int I = 0;I < 4;i++) {
控制台。WriteLine("主线程:做一些工作。");
线程。睡眠(0);
}
控制台。WriteLine("Main thread: Call Join(),等待ThreadProc结束。");
t . Join();
控制台。WriteLine("主线程:ThreadProc。加入已返回。按Enter键结束程序。);
控制台。ReadLine();
}
}
此代码生成的输出类似于以下内容:
主线程:启动第二个线程。
主线程:做一些工作。
thread proc:0
主线程:做一些工作。
ThreadProc: 1
主线程:做一些工作。
thread proc:2
主线程:做一些工作。
ThreadProc:3
主线程:调用Join(),等待thread proc结束。
ThreadProc:4
thread proc:5
thread proc:6
thread proc:7
thread proc:8
thread proc:9
主线程:thread proc。加入已返回。按Enter键结束程序
0条评论