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

来源:互联网 发布:淘宝禁售商品退款 编辑:程序博客网 时间:2024/03/29 13:48

先来看看使用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");
}

原创粉丝点击