我将为您详细讲解“C#开启线程的四种示例”的完整攻略。
什么是线程?
线程(Thread)是操作系统能够进行运算调度的最小单位,它被包含在进程(Process)之中,是进程中的实际运作单位。
在C#中,我们可以使用Thread类在程序中创建并开启线程。
使用Thread类开启线程的四种方式
方式一:使用ThreadStart委托
Thread t = new Thread(new ThreadStart(Method));
t.Start();
其中Method为需要执行的方法,这个方法必须是void类型且无参数。
方式二:使用ParameterizedThreadStart委托
Thread t = new Thread(new ParameterizedThreadStart(Method));
t.Start(parameter);
其中Method为需要执行的方法,这个方法必须是void类型且参数只有一个object类型的参数。parameter为传递给Method方法的参数。
方式三:使用Lambda表达式
Thread t = new Thread(() => {
// 这里写需要执行的代码
});
t.Start();
方式四:使用ThreadPool
ThreadPool.QueueUserWorkItem(new WaitCallback(Method));
其中Method为需要执行的方法,这个方法必须只有一个object类型的参数。
示例说明
示例一
我们来看一个简单的示例,首先我们创建一个方法:
private static void PrintNumbers()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}
}
接下来我们使用ThreadStart委托来开启一个线程并执行PrintNumbers方法:
Thread t = new Thread(new ThreadStart(PrintNumbers));
t.Start();
这会开启一个新的线程来执行PrintNumbers方法,这个方法会输出0到9的数字。
示例二
我们再看一个稍微复杂一点的示例,这个示例会开启两个线程,一个用来输出偶数,一个用来输出奇数:
private static void PrintEvenNumbers()
{
for (int i = 0; i < 10; i += 2)
{
Console.WriteLine(i);
}
}
private static void PrintOddNumbers()
{
for (int i = 1; i < 10; i += 2)
{
Console.WriteLine(i);
}
}
接下来我们使用Lambda表达式来开启两个线程并分别执行PrintEvenNumbers和PrintOddNumbers方法:
Thread t1 = new Thread(() => {
PrintEvenNumbers();
});
Thread t2 = new Thread(() => {
PrintOddNumbers();
});
t1.Start();
t2.Start();
这会开启两个新的线程,一个输出偶数,一个输出奇数。
以上就是关于“C#开启线程的四种示例”的完整攻略,希望对您有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#开启线程的四种示例 - Python技术站