VisualC#中编写多线程程序之起步

VisualC#中编写多线程程序之起步,第1张

VisualC#中编写多线程程序之起步,第2张

。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键结束程序

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » VisualC#中编写多线程程序之起步

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情