WaitOne
方法是C#中ManualResetEvent
類的一個成員,用于等待一個事件變為有信號狀態。ManualResetEvent
是一個同步原語,用于在多線程環境中控制對共享資源的訪問。
以下是WaitOne
方法的使用示例:
using System;
using System.Threading;
class Program
{
static ManualResetEvent _event = new ManualResetEvent(false); // 創建一個初始狀態為無信號的事件
static void Main()
{
Thread thread1 = new Thread(Thread1Method);
Thread thread2 = new Thread(Thread2Method);
thread1.Start();
thread2.Start();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
static void Thread1Method()
{
Console.WriteLine("Thread 1 is waiting for the event...");
_event.WaitOne(); // 等待事件變為有信號狀態
Console.WriteLine("Thread 1 has been signaled.");
}
static void Thread2Method()
{
Thread.Sleep(1000); // 讓線程2睡眠1秒,以便在線程1之前執行
Console.WriteLine("Thread 2 is signaling the event...");
_event.Set(); // 將事件設置為有信號狀態
}
}
在這個示例中,我們創建了兩個線程thread1
和thread2
。Thread1Method
方法使用WaitOne
等待事件變為有信號狀態,而Thread2Method
方法在睡眠1秒后使用Set
將事件設置為有信號狀態。當事件變為有信號狀態時,Thread1Method
將繼續執行。