///定時器
///C#提供了3個類可以實現定時器
///System.Timers.Timer
///在實現中使用線程池中的線程去執行任務。與使用線程池一樣,必須在訪問任務所用到的資源時,對線程進行同步
///Interval{get;set}屬性 可以設定精度為毫秒的執行時間
///Start() 開始定時器
///Stop() 關閉定時器
///Enabled{get;set;} 設定定時器的活動狀態
///一個ElapsedEventHandler類型的委派物件引用代表將被執行的任務的方法。該引用被表示為ElapsedEventHandler
///類型的事件。ElapsedEventHandler委派物件的簽名式如下所示。
///void ElapsedEventHandler(Object sender,ElasedEventArgs e)
///第一個參數引用了觸發任務的定時器。因此,幾個定時器可以觸發同一個方法而通過該參數來區別它們。此外,由
///於一個委派物件可以引用多個方法,同一個定時器也就可以在每次被觸發後連續調用多個方法。第二個參數包含了
///定時器被觸發的時間,可以通過該對象中類型為DataTime的ElapsedEvenArgs.SignalTime{get;}屬性獲得該值。
///下面的程式示範了System.Timers.Timer類的使用
///
using System;
using System.Timers;
class program
{
static Timer Timer1 = new Timer();
static Timer Timer2 = new Timer();
static void Main()
{
Timer1.Interval = 1000;
Timer1.Elapsed += new ElapsedEventHandler(PeriodicTaskHandler);
Timer2.Interval = 2000;
Timer2.Elapsed += new ElapsedEventHandler(PeriodicTaskHandler);
Timer2.Elapsed += new ElapsedEventHandler(PeriodicTaskHandler);
Timer1.Start();
Timer2.Start();
System.Threading.Thread.Sleep(5000);
Timer1.Stop();
Timer2.Stop();
}
static void PeriodicTaskHandler(object sender, ElapsedEventArgs e)
{
string str = (sender == Timer1) ? "Timer1" : "timer2";
str += e.SignalTime.ToLongTimeString();
Console.WriteLine(str);
}
}