如果Timer的回檔方法的執行時間很長,計時器可能在上個回檔方法還沒有完成的時候再次觸發,如果我們只是想讓一個回檔方法執行完後再執行下一個回檔方法,可以這樣:



 

private static Timer s_timer;

 

static void Main(string[] args)
{
s_timer = new Timer(ComputeBoundOp, 5, 0, Timeout.Infinite);//為period參數指定Timeout.Infinite,這樣計時器只觸發一次

 

Console.ReadKey();
}

 

private static void ComputeBoundOp(Object state)
{
Console.WriteLine("In ComputeBoundOp:state={0}", state);
Thread.Sleep(3000);

 

s_timer.Change(2000, Timeout.Infinite);//為dueTime指定下次調用回檔方法所需要等待的時間
}
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()