溫馨提示×

C# ManualResetEvent等待時間怎樣設(shè)置

c#
小樊
85
2024-10-12 09:21:01
欄目: 編程語言

在C#中,ManualResetEvent 類用于同步多個線程,允許一個或多個線程等待,直到其他線程調(diào)用 Set 方法來重置事件。要設(shè)置 ManualResetEvent 的等待時間,你可以使用 WaitOne、WaitManyWaitAny 方法,并傳入一個表示超時時間的 TimeSpan 參數(shù)。

以下是一個簡單的示例,展示了如何使用 ManualResetEvent 設(shè)置等待時間:

using System;
using System.Threading;

class Program
{
    static ManualResetEvent _event = new ManualResetEvent(false); // 初始化為非信號狀態(tài)

    static void Main()
    {
        Thread thread1 = new Thread(DoWork);
        Thread thread2 = new Thread(DoWork);

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

        // 讓線程1在等待5秒后繼續(xù)執(zhí)行
        _event.WaitOne(5000);
        Console.WriteLine("Thread 1 continues.");

        // 讓所有等待的線程繼續(xù)執(zhí)行
        _event.Set();

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

    static void DoWork()
    {
        Console.WriteLine("Thread waiting for event.");
        _event.WaitOne(); // 等待事件被設(shè)置
        Console.WriteLine("Event set, thread continues.");
    }
}

在這個示例中,我們創(chuàng)建了兩個線程 thread1thread2,它們都調(diào)用 DoWork 方法。在 DoWork 方法中,線程調(diào)用 ManualResetEventWaitOne 方法并傳入一個5秒的超時時間。這意味著線程將等待最多5秒,然后繼續(xù)執(zhí)行。在主線程中,我們在5秒后調(diào)用 Set 方法來設(shè)置事件,允許所有等待的線程繼續(xù)執(zhí)行。

0