在C#中,WaitOne
方法是ManualResetEvent
类的一个成员,用于等待一个事件变为有信号状态。要查看WaitOne
方法的状态,您可以使用ManualResetEvent
类的IsSet
属性。
以下是一个示例:
using System;
using System.Threading;
class Program
{
static ManualResetEvent _event = new ManualResetEvent(false);
static void Main()
{
// 启动一个线程,等待事件变为有信号状态
Thread thread = new Thread(() =>
{
Console.WriteLine("等待事件变为有信号状态...");
_event.WaitOne();
Console.WriteLine("事件已变为有信号状态!");
});
thread.Start();
// 让主线程休眠一段时间,以便子线程有机会执行
Thread.Sleep(2000);
// 设置事件为有信号状态
_event.Set();
// 等待子线程完成
thread.Join();
}
}
在这个示例中,我们创建了一个ManualResetEvent
实例_event
,并将其初始状态设置为false
(无信号)。然后,我们启动一个新线程,该线程调用WaitOne
方法等待事件变为有信号状态。在主线程中,我们休眠一段时间,然后使用Set
方法将事件设置为有信号状态。最后,我们使用Join
方法等待子线程完成。
要查看WaitOne
方法的状态,您可以在调用WaitOne
之前和之后检查IsSet
属性的值。例如:
Console.WriteLine("等待事件变为有信号状态之前: IsSet = " + _event.IsSet);
_event.WaitOne();
Console.WriteLine("等待事件变为有信号状态之后: IsSet = " + _event.IsSet);
这将输出:
等待事件变为有信号状态之前: IsSet = False
等待事件变为有信号状态之后: IsSet = True