溫馨提示×

c# autoresetevent怎樣實現

c#
小樊
113
2024-11-18 10:58:03
欄目: 編程語言

在C#中,AutoResetEvent是一個同步原語,它允許一個或多個線程等待,直到另一個線程發出信號。當AutoResetEvent的計數器從0變為非0時,等待的線程會被釋放。

要使用AutoResetEvent,你需要執行以下步驟:

  1. 創建一個AutoResetEvent實例。
  2. 使用WaitOne()方法讓當前線程等待,直到AutoResetEvent被發出信號。
  3. 使用Set()方法發出信號,喚醒等待的線程。
  4. 使用Reset()方法將計數器重置為0,阻止其他線程被喚醒。

下面是一個簡單的示例:

using System;
using System.Threading;

class Program
{
    static AutoResetEvent autoResetEvent = new AutoResetEvent(false); // 初始計數為0

    static void Main()
    {
        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: Waiting for AutoResetEvent...");
        autoResetEvent.WaitOne(); // 等待信號
        Console.WriteLine("Thread 1: Signal received.");
    }

    static void ThreadMethod2()
    {
        Thread.Sleep(1000); // 讓線程休眠1秒,以便觀察等待效果
        Console.WriteLine("Thread 2: Signaling AutoResetEvent...");
        autoResetEvent.Set(); // 發出信號
    }
}

在這個示例中,我們創建了兩個線程t1t2。ThreadMethod1會等待AutoResetEvent的信號,而ThreadMethod2會在休眠1秒后發出信號。當ThreadMethod2發出信號后,ThreadMethod1會繼續執行。

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