在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