溫馨提示×

如何在c#中同步多個計時器

c#
小樊
81
2024-09-28 04:02:56
欄目: 編程語言

在C#中,要同步多個計時器,您可以使用Timer類并將它們的Elapsed事件處理程序設(shè)置為同一個方法

using System;

namespace SynchronizedTimers
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建并啟動第一個計時器
            Timer timer1 = new Timer(1000); // 每隔1000毫秒(1秒)觸發(fā)一次
            timer1.Elapsed += OnTimerElapsed;
            timer1.Start();

            // 創(chuàng)建并啟動第二個計時器
            Timer timer2 = new Timer(2000); // 每隔2000毫秒(2秒)觸發(fā)一次
            timer2.Elapsed += OnTimerElapsed;
            timer2.Start();

            // 讓主程序運行一段時間,以便計時器有足夠的時間觸發(fā)事件
            Console.WriteLine("Press 'q' to quit.");
            while (Console.Read() != 'q') ;

            // 停止計時器
            timer1.Stop();
            timer2.Stop();
        }

        // 這個方法將在每個計時器的Elapsed事件中被調(diào)用
        static void OnTimerElapsed(object sender, ElapsedEventArgs e)
        {
            Console.WriteLine($"Timer 1 elapsed at: {DateTime.Now}");
            Console.WriteLine($"Timer 2 elapsed at: {DateTime.Now}");
        }
    }
}

在這個示例中,我們創(chuàng)建了兩個計時器timer1timer2,它們分別每隔1秒和2秒觸發(fā)一次。我們將它們的Elapsed事件處理程序設(shè)置為同一個名為OnTimerElapsed的方法。當計時器觸發(fā)事件時,該方法將同時處理兩個計時器的Elapsed事件。

請注意,這個示例中的計時器是異步的,但它們的事件處理程序是同步執(zhí)行的。這意味著當OnTimerElapsed方法被調(diào)用時,它將處理所有等待的計時器事件,然后繼續(xù)執(zhí)行。因此,盡管計時器是異步的,但它們的事件處理程序會按照預期的順序執(zhí)行。

0