1. 首页
  2. 编程语言
  3. C#
  4. ConsoleApp1C#多线程示例

ConsoleApp1C#多线程示例

上传者: 2025-05-25 02:00:07上传 ZIP文件 191.28KB 热度 1次

在 C# 编程中,线程是并发执行代码的基本单元。通过多线程,程序能够同时多个任务,提升执行效率。在这个示例中,展示了如何创建、使用和释放线程,关注线程间的等待与唤醒机制。

C# 中可以使用 System.Threading 命名空间中的 Thread 类来管理线程。通过创建 Thread 对象并传递委托,可以启动新线程:

csharp
Thread thread = new Thread(new ThreadStart(MyMethod));
thread.Start();

此时,MyMethod 将会在新的线程中执行。

线程的释放通常由系统自动控制。在 C# 中,线程一旦完成任务或被中断,就会自动释放资源。为了让线程在所有前台线程结束时自动终止,可以将线程的 IsBackground 属性设置为 true。这样,后台线程无需显式释放。

多线程编程中的另一个重要概念是线程间的等待与唤醒机制。C# 了多种同步原语,如 MonitorMutexSemaphoreEventWaitHandle,它们用于控制线程执行顺序。地,EventWaitHandle 类适合实现等待与唤醒操作。

EventWaitHandle 有两种主要状态:设置(Set)和重置(Reset)。线程可以在等待状态,直到事件被设置。一旦事件被设置,至少一个等待线程会被唤醒继续执行。

以下是使用 AutoResetEventEventWaitHandle 的子类)实现线程等待与唤醒的简单示例:

csharp
using System.Threading;
AutoResetEvent waitHandle = new AutoResetEvent(false);
// 线程 A
void ThreadA() {
// 执行任务
// ...
waitHandle.Set();
// 设置事件,唤醒线程 B
}

// 线程 B
void ThreadB() {
waitHandle.WaitOne();
// 等待事件被设置
// 线程 A 设置事件后,线程 B 被唤醒,继续执行
// ...
}

线程 B 调用 WaitOne() 方法进入等待状态,直到线程 A 调用 Set() 唤醒它。值得注意的是,AutoResetEvent 只会唤醒一个等待的线程,且在事件被设置后会自动重置为未设置状态。

示例程序展示了线程的创建、后台线程的使用及线程间同步机制。理解并掌握这些技术,对于 C# 多线程编程能力的提升至关重要。

下载地址
用户评论