WaitOne
方法通常在 C# 中的异步编程中使用,它属于 ManualResetEvent
类。ManualResetEvent
是一个同步原语,用于在多个线程之间进行同步。当调用 WaitOne
方法时,当前线程会阻塞,直到事件被设置为信号状态。
以下是一个简单的示例,说明在哪里调用 WaitOne
方法:
using System;
using System.Threading;
class Program
{
static ManualResetEvent _event = new ManualResetEvent(false);
static void Main(string[] args)
{
// 创建一个新线程
Thread thread = new Thread(DoWork);
thread.Start();
// 在主线程中等待事件被设置为信号状态
Console.WriteLine("等待事件...");
_event.WaitOne();
Console.WriteLine("事件已触发");
// 结束主线程
thread.Join();
}
static void DoWork()
{
// 模拟耗时操作
Thread.Sleep(3000);
// 将事件设置为信号状态
Console.WriteLine("工作线程完成,设置事件...");
_event.Set();
}
}
在这个示例中,我们创建了一个名为 _event
的 ManualResetEvent
实例。在主线程中,我们调用 _event.WaitOne()
以等待事件被设置为信号状态。在工作线程(DoWork
方法)中,我们模拟耗时操作,然后使用 _event.Set()
将事件设置为信号状态。当事件被设置时,主线程将继续执行并输出 “事件已触发”。