在C#中,要同步多個計時器,您可以使用Timer
類并將它們的Elapsed
事件處理程序設置為同一個方法
using System;
namespace SynchronizedTimers
{
class Program
{
static void Main(string[] args)
{
// 創建并啟動第一個計時器
Timer timer1 = new Timer(1000); // 每隔1000毫秒(1秒)觸發一次
timer1.Elapsed += OnTimerElapsed;
timer1.Start();
// 創建并啟動第二個計時器
Timer timer2 = new Timer(2000); // 每隔2000毫秒(2秒)觸發一次
timer2.Elapsed += OnTimerElapsed;
timer2.Start();
// 讓主程序運行一段時間,以便計時器有足夠的時間觸發事件
Console.WriteLine("Press 'q' to quit.");
while (Console.Read() != 'q') ;
// 停止計時器
timer1.Stop();
timer2.Stop();
}
// 這個方法將在每個計時器的Elapsed事件中被調用
static void OnTimerElapsed(object sender, ElapsedEventArgs e)
{
Console.WriteLine($"Timer 1 elapsed at: {DateTime.Now}");
Console.WriteLine($"Timer 2 elapsed at: {DateTime.Now}");
}
}
}
在這個示例中,我們創建了兩個計時器timer1
和timer2
,它們分別每隔1秒和2秒觸發一次。我們將它們的Elapsed
事件處理程序設置為同一個名為OnTimerElapsed
的方法。當計時器觸發事件時,該方法將同時處理兩個計時器的Elapsed
事件。
請注意,這個示例中的計時器是異步的,但它們的事件處理程序是同步執行的。這意味著當OnTimerElapsed
方法被調用時,它將處理所有等待的計時器事件,然后繼續執行。因此,盡管計時器是異步的,但它們的事件處理程序會按照預期的順序執行。