C#中关于多线程编程的示例代码

先来看看使用Thread类来实现多线程,示例代码如下:

注意:

可以通过workerThread.Priority = ThreadPriority.X设置线程的优先级。

ThreadPriority是个枚举类型,包括:Highest,AboveNormal,Normal,BelowNormal和Lowest。

一般当前线程(Thread.CurrentThread)被默认设置成Normal。

不过如今的CPU都已经相当的快了,上例中即便把workerThread.Priority = ThreadPriority.Highest;当输入的数字很小,譬如输入1,也就是运算量较小的时候,主线程也能顺利的抢在Work线程之前完成任务的。但是随便interval设置值增大,情况就有所不同了。

 

 

再来看看如何使用ThreadPool创建线程:

使用Thread类来创建线程是很昂股的(CPU密集型)。所以CLR提供了线程池来供应用程序使用,演示代码如下:

注意:

使用WaitCallback委托时还可以传送一个参数,例如把上面的代码改成:

ThreadPool.QueueUserWorkItem(new WaitCallback(StartMethod), "First Thread");
Thread.Sleep(100);
ThreadPool.QueueUserWorkItem(new WaitCallback(StartMethod), "Second Thread");
Console.ReadLine();

接着在StartMethod里可以使用它,例如;

static void StartMethod(Object stateInfo)
{
        //DisplayNumbers("Thread " + DateTime.Now.Millisecond.ToString());
        DisplayNumbers("Thread " + stateInfo.ToString());
        Console.WriteLine("Thread Finished");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值