在C#中,AutoResetEvent
是一個同步原語,用于在多個線程之間進行通信
using System;
using System.Threading;
class Program
{
static AutoResetEvent autoResetEvent = new AutoResetEvent(false); // 初始狀態為false
static void Main()
{
Thread thread1 = new Thread(Thread1Method);
Thread thread2 = new Thread(Thread2Method);
thread1.Start();
thread2.Start();
thread1.Join();
thread2.Join();
}
static void Thread1Method()
{
Console.WriteLine("Thread 1 is waiting for the AutoResetEvent.");
autoResetEvent.WaitOne(); // 等待事件被設置為true
Console.WriteLine("Thread 1 has been signaled.");
}
static void Thread2Method()
{
Thread.Sleep(1000); // 讓線程2睡眠1秒,以便在線程1之前執行
Console.WriteLine("Thread 2 is signaling the AutoResetEvent.");
autoResetEvent.Set(); // 將事件設置為true
}
}
在這個示例中,我們創建了一個名為autoResetEvent
的AutoResetEvent
實例,并將其初始狀態設置為false
。然后,我們創建了兩個線程thread1
和thread2
,分別執行Thread1Method
和Thread2Method
方法。
在Thread1Method
中,我們使用autoResetEvent.WaitOne()
等待事件被設置為true
。在Thread2Method
中,我們首先讓線程睡眠1秒,然后使用autoResetEvent.Set()
將事件設置為true
。當事件被設置為true
時,Thread1Method
將繼續執行。