ManualResetEvent 和 EventWaitHandle 是 .NET 中用于线程同步的类,它们都属于 WaitHandle 的派生类。它们的主要作用是允许一个或多个线程等待某个信号(事件)的发生,从而实现线程间的协调。
1. ManualResetEvent
ManualResetEvent 是一个手动重置的事件对象。它的状态可以是 已发出信号(signaled) 或 未发出信号(non-signaled)。当事件处于 已发出信号 状态时,所有等待该事件的线程都会被释放;当事件处于 未发出信号 状态时,所有等待该事件的线程都会被阻塞。
主要方法
Set():将事件状态设置为 已发出信号,释放所有等待的线程。
Reset():将事件状态设置为 未发出信号,阻塞后续等待的线程。
WaitOne():阻塞当前线程,直到事件状态变为 已发出信号。
示例 1:基本用法
using System;
using System.Threading;
class Program
{
static ManualResetEvent manualEvent = new ManualResetEvent(false);
static void Main()
{
// 启动一个工作线程
Thread workerThread = new Thread(DoWork);
workerThread.Start();
Console.WriteLine("Main thread is waiting for the worker thread to complete...");
manualEvent.WaitOne(); // 等待事件发出信号
Console.WriteLine("Main thread received the signal and continues.");
}
static void DoWork()
{
Console.

最低0.47元/天 解锁文章
1548

被折叠的 条评论
为什么被折叠?



