1.System.Windows.Forms.Timer
使用地方:Windows 窗體應用程序中,並且必須在窗口中使用。
2.System.Timers.Timer
使用地方:在應用程序中
一類是執行方法:
1.System.Threading.Timer
使用地方:執行方法的機制,無法繼承此類。
1.System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();//實例化一個timer
2.myTimer.Tick += new EventHandler(函數名); //給timer掛起事件
3.myTimer.Enabled = true;//使timer可用
4.myTimer.Interval = n; //設置時間間隔,以毫秒為單位
5.myTimer.Stop(); //如果要暫停計時則使用Stop()方法
6.myTimer.Enabled = false;//若要停止使用timer,則使之不可用
1 System.Timers.Timer t = new System.Timers.Timer(10000); //實例化Timer類,設置間隔時間為10000毫秒;
2 t.Elapsed += new System.Timers.ElapsedEventHandler(theout); //到達時間的時候執行事件;
3 t.AutoReset = true; //設置是執行一次(false)還是一直執行(true);
4 t.Enabled = true; //是否執行System.Timers.Timer.Elapsed事件;
5
6 public void theout(object source, System.Timers.ElapsedEventArgs e)
7 {
8 MessageBox.Show("OK!");
9 }
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();
}
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9 using System.Threading;
10
11 namespace MYTimerTest
12 {
13 public partial class Form1 : Form
14 {
15 public Form1()
16 {
17 InitializeComponent();
18 }
19
20 private void Form1_Load(object sender, EventArgs e)
21 {
22
23 System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(timer_Elapsed), null, 0, 1000);
24 }
25
26 void timer_Elapsed(object sender)
27 {
28 for (int i = 0; i < 10; i++)
29 {
30 Console.Out.WriteLine(DateTime.Now + " " + DateTime.Now.Millisecond.ToString() + "timer in:");
31 }
32
33 }
34 }
35 }