多线程让我们能够在 C# 中并发执行任务。这不仅能提高性能,还能增强应用程序的响应速度。我们可以通过 System.Threading 命名空间来创建线程。借助线程(Threads),我们能够实现多任务处理,并利用 Thread 类 提供的不同方法来定义它们的行为。
示例: 这个示例展示了如何 在 C# 中使用 Thread 类创建并启动线程。
C#
CODEBLOCK_71acc37a
输出结果
Main thread: 0
Worker thread: 0
Main thread: 1
Worker thread: 1
Main thread: 2
Worker thread: 2
详解:在这个示例中,我们使用 Thread 类创建了一个新线程,并将一个指向 Worker 方法的委托传递给它。接着,我们使用 Start 方法启动该线程。之后,我们使用了 Join 方法来等待另一个线程完成其工作。
> 注意: 在创建线程时,请确保正确同步线程间对共享数据的访问,以避免竞态条件和其他同步问题。
创建线程的步骤
步骤 1:导入 System.Threading 命名空间
首先,我们需要导入 System.Threading 命名空间。这在程序创建线程的过程中起着重要作用,因为它允许我们在使用线程相关类时,无需每次都指定其完全限定名称。
> using System;
>
> using System.Threading;
步骤 2:创建与初始化
现在,在 Main 方法中创建并初始化线程对象。
> public static void main()
> {
> Thread thr = new Thread(job1);
> }
步骤 3:启动线程
使用 Start 方法启动线程。
> public static void main()
>
> {
> Thread thr = new Thread(job1);
>
> thr.Start();
> }
示例:
C#
CODEBLOCK_e7c78398
输出结果
First Thread
First Thread
First Thread
详解: 在上面的示例中,我们创建了 ExThread 类的一个实例,并将其方法通过 ThreadStart 委托 传递给了线程。然后,我们创建了一个线程 并使用 **thr.Start()** 启动它,以便在独立的线程中执行该方法。
示例:
C#
CODEBLOCK_5712e545
输出结果
0
1
2
0
1
2
详解 在上面的示例中,ExThread 类包含两个静态方法 thread1() 和 thread2()。因此,我们不需要创建 ExThread 类的实例。在这里,我们通过类名调用这些方法,创建并初始化了线程 a 的工作,线程 b 也是如此。通过使用 a.Start(); 和 b.Start(); 语句,线程 a 和 b 被调度执行。
注意: 由于上下文切换,这些程序的输出可能会有所不同。
创建线程的不同方式
- 使用 Thread 类
- 使用 Task 类
- 使用 ThreadStart 委托
1. 使用 Thread 类
在 C# 中,Thread 类 用于创建和管理线程,它提供了对多线程更强大的控制力。它允许我们执行设置线程优先级、管理线程状态以及处理同步等操作。我们可以对线程执行多种操作,设置优先级,管理线程状态,并利用同步机制来防止竞态条件。
Exa