程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#准時器應用示例詳解

c#准時器應用示例詳解

編輯:C#入門知識

c#准時器應用示例詳解。本站提示廣大學習愛好者:(c#准時器應用示例詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是c#准時器應用示例詳解正文


在C#裡關於准時器類就有3個 
1.界說在System.Windows.Forms裡 
2.界說在System.Threading.Timer類裡 
3.界說在System.Timers.Timer類裡

System.Windows.Forms.Timer是運用於WinForm中的,它是經由過程Windows新聞機制完成的,相似於VB或Delphi中的Timer控件,外部應用API  SetTimer完成的。它的重要缺陷是計時不准確,並且必需有新聞輪回,Console Application(掌握台運用法式)沒法應用。 

System.Timers.Timer和System.Threading.Timer異常相似,它們是經由過程.NET  Thread  Pool完成的,輕量,計時准確,對運用法式、新聞沒有特殊的請求。System.Timers.Timer還可以運用於WinForm,完整代替下面的Timer控件。它們的缺陷是不支撐直接的拖放,須要手工編碼。

例1:
應用System.Timers.Timer類

System.Timers.Timer t = new System.Timers.Timer(10000);//實例化Timer類,設置距離時光為10000毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//達到時光的時刻履行事宜;
t.AutoReset = true;//設置是履行一次(false)照樣一向履行(true);
t.Enabled = true;//能否履行System.Timers.Timer.Elapsed事宜;
public void theout(object source, System.Timers.ElapsedEventArgs e)
{
     MessageBox.Show("OK!");
}


例2:System.Threading.Timer類的TimerCallback 拜托

System.Threading.Timer 是一個應用回調辦法的計時器,並且由線程池線程辦事,簡略且對資本請求不高。
只需在應用 Timer,就必需保存對它的援用。關於任何托管對象,假如沒有對 Timer 的援用,計時器會被渣滓收受接管。即便 Timer 仍處在運動狀況,也會被收受接管。當不再須要計時器時,請應用 Dispose 辦法釋放計時器持有的資本。
應用 TimerCallback 拜托指定願望 Timer 履行的辦法。計時器拜托在結構計時器時指定,而且不克不及更改。此辦法不在創立計時器的線程中履行,而是在體系供給的線程池線程中履行。
創立計時器時,可以指定在第一次履行辦法之前期待的時光量(截止時光)和爾後的履行時代期待的時光量(時光周期)。可使用 Change 辦法更改這些值或禁用計時器。
Demo application:
運用場景:在windows form法式主動履行某項任務後,願望其windows form可以或許主動封閉。

代碼設計:

(1)起首聲明Timer變量:private System.Threading.Timer timerClose;
(2)在上述主動履行代碼前面添加以下Timer實例化代碼:


// Create a timer thread and start it
timerClose = new System.Threading.Timer(new TimerCallback(timerCall), this, 5000, 0);

Timer結構函數參數解釋:
Callback:一個 TimerCallback 拜托,表現要履行的辦法。
State:一個包括回調辦法要應用的信息的對象,或許為空援用(Visual Basic 中為 Nothing)。
dueTime:挪用 callback 之前延遲的時光量(以毫秒為單元)。指定 Timeout.Infinite 以避免計時器開端計時。指定零 (0) 以立刻啟動計時器。
Period:挪用 callback 的時光距離(以毫秒為單元)。指定 Timeout.Infinite 可以禁用按期終止。

(3)界說TimerCallback拜托要履行的辦法:

private void timerCall(object obj)
{
      timerClose.Dispose();
      this.Close();
}

固然,除應用上述System.Threading.Timer類的TimerCallback 拜托機制外,應當還有許多其他的方法。別的,這裡只是demo了TimerCallback拜托的簡略運用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved