溫馨提示×

c# autoresetevent怎樣通知

c#
小樊
97
2024-11-18 11:05:03
欄目: 編程語言

C#中的AutoResetEvent是一種同步原語,用于在多個線程之間進行通信。它允許一個或多個線程等待,直到另一個線程觸發事件。當事件被觸發時,所有等待的線程將被釋放。AutoResetEvent有兩個主要方法:Set()用于觸發事件,WaitOne()用于等待事件被觸發。

以下是一個簡單的示例,說明如何使用AutoResetEvent通知線程:

using System;
using System.Threading;

class Program
{
    static AutoResetEvent _autoResetEvent = new AutoResetEvent(false); // 初始狀態為未觸發

    static void Main(string[] args)
    {
        Thread t1 = new Thread(ThreadMethod1);
        Thread t2 = new Thread(ThreadMethod2);

        t1.Start();
        t2.Start();

        t1.Join();
        t2.Join();
    }

    static void ThreadMethod1()
    {
        Console.WriteLine("Thread 1 is waiting for the event to be set.");
        _autoResetEvent.WaitOne(); // 等待事件被觸發
        Console.WriteLine("Thread 1: The event has been set.");
    }

    static void ThreadMethod2()
    {
        Thread.Sleep(1000); // 讓線程2延遲1秒,以便線程1先運行
        Console.WriteLine("Thread 2 is setting the event.");
        _autoResetEvent.Set(); // 觸發事件
        Console.WriteLine("Thread 2: The event has been set.");
    }
}

在這個示例中,我們創建了兩個線程t1t2。線程t1等待AutoResetEvent被觸發,而線程t2在延遲1秒后觸發事件。當事件被觸發時,所有等待的線程將被釋放并繼續執行。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女