溫馨提示×

如何在C#中使用ManualResetEvent

c#
小樊
103
2024-07-02 20:02:14
欄目: 編程語言

在C#中,可以使用ManualResetEvent類來實現線程間的同步和通信。下面是一個簡單的示例代碼,演示如何在C#中使用ManualResetEvent:

using System;
using System.Threading;

class Program
{
    static ManualResetEvent manualResetEvent = new ManualResetEvent(false);

    static void Main(string[] args)
    {
        Thread thread1 = new Thread(() =>
        {
            Console.WriteLine("Thread 1 is waiting...");
            manualResetEvent.WaitOne();

            Console.WriteLine("Thread 1 is now running.");
        });

        Thread thread2 = new Thread(() =>
        {
            Console.WriteLine("Thread 2 is waiting...");
            manualResetEvent.WaitOne();

            Console.WriteLine("Thread 2 is now running.");
        });

        thread1.Start();
        thread2.Start();

        Thread.Sleep(2000); // 等待2秒鐘

        manualResetEvent.Set(); // 發信號,讓等待的線程繼續執行

        thread1.Join();
        thread2.Join();
    }
}

在上面的示例代碼中,我們創建了一個ManualResetEvent實例并初始化為false。然后創建了兩個線程(thread1和thread2),它們都在等待ManualResetEvent對象的信號。在主線程中等待2秒鐘后,調用Set方法發送信號,讓等待的線程繼續執行。

需要注意的是,ManualResetEvent對象在調用Set方法后會一直保持信號狀態,直到調用Reset方法將其重新設置為非信號狀態。

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