Windows 窗体 Timer 是定期引发事件的组件。该组件是为 Windows 窗体环境设计的。
时间间隔的长度由 Interval 属性定义,其值以毫秒为单位。若启用了该组件,则每个时间间隔引发一个 Tick 事件。
这是添加要执行的代码的位置。
Timer 组件的主要方法包括 Start 和Stop,这两种方法可打开和关闭计时器。计时器在关闭时重置;不存在暂停 Timer 组件的方法。
二、Windows 窗体 Timer 组件的 Interval 属性的限制
Windows 窗体 Timer 组件具有一个 Interval 属性,该属性指定一个计时器事件与下一个计时器事件之间间隔的毫秒数。
除非该组件被禁用,否则计时器会以大致相等的时间间隔继续接收 Tick 事件
Interval 属性:当编写 Timer 组件时,需要考虑 Interval 属性的几点限制:
-
如果应用程序或另一个应用程序对系统需求很大(如长循环、大量的计算或驱动程序、网络或端口访问),那么应用程序可能无法以 Interval 属性指定的频率来获取计时器事件。
-
间隔可以在 1 和 64,767 之间(包括 1 和 64,767),这意味着即使最长的间隔(大约 64.8 秒)也不会超过一分钟很多。
-
不能保证间隔所精确经过的时间。若要确保精确,计时器应根据需要检查系统时钟,而不是尝试在内部跟踪所积累的时间。
-
系统每秒生成 18 个时钟刻度,因此即使 Interval 属性以毫秒为单位,间隔的实际精度也不会超过十八分之一秒。
- System.Windows.Forms.Timer 类提供有关 Timer 类(用于 Windows 窗体计时器)及其成员的参考信息
1 private void InitializeTimer() 2 { 3 //' Run this procedure in an appropriate event. 4 // Set to 1 second. 5 Timer1.Interval = 1000; 6 // Enable timer. 7 Timer1.Enabled = true; 8 Button1.Text = "Stop"; 9 } 10 11 private void Timer1_Tick(object Sender, EventArgs e) 12 { 13 // Set the caption to the current time. 14 Label1.Text = DateTime.Now.ToString(); 15 } 16 17 private void Button1_Click() 18 { 19 if ( Button1.Text == "Stop" ) 20 { 21 Button1.Text = "Start"; 22 Timer1.Enabled = false; 23 } 24 else 25 { 26 Button1.Text = "Stop"; 27 Timer1.Enabled = true; 28 } 29 }
2、第二个代码示例每隔 600 毫秒运行一次过程,直到循环完成时为止。
下面的代码示例要求您拥有一个窗体,该窗体具有一个名为 Button1 的 Button 控件、一个名为 Timer1 的 Timer 控件和一个名为 Label1 的 Label 控件。
1 // This variable will be the loop counter. 2 private int counter; 3 4 private void InitializeTimer() 5 { 6 // Run this procedure in an appropriate event. 7 counter = 0; 8 timer1.Interval = 600; 9 timer1.Enabled = true; 10 // Hook up timer's tick event handler. 11 this.timer1.Tick += new System.EventHandler(this.timer1_Tick); 12 } 13 14 private void timer1_Tick(object sender, System.EventArgs e) 15 { 16 if (counter >= 10) 17 { 18 // Exit loop code. 19 timer1.Enabled = false; 20 counter = 0; 21 } 22 else 23 { 24 // Run your procedure here. 25 // Increment counter. 26 counter = counter + 1; 27 label1.Text = "Procedures Run: " + counter.ToString(); 28 } 29 }
详细信息查看:http://msdn.microsoft.com/zh-cn/library/beza71x7(v=vs.80).aspx