在.net中有三種計時器:
1、system.windows.forms命名空間下的timer控制項,它直接繼承自componet。timer控制項只有繫結了tick事件和設定enabled=true後才會自動計時,停止計時可以用stop()方法控制,通過stop()停止之後,如果想重新計時,可以用start()方法來啟動計時器。timer控制項和它所在的form屬於同乙個執行緒;
2、system.timers命名空間下的timer類。system.timers.timer類:定義乙個system.timers.timer物件,然後繫結elapsed事件,通過start()方法來啟動計時,通過stop()方法或者enable=false停止計時。autoreset屬性設定是否重複計時(設定為false只執行一次,設定為true可以多次執行)。elapsed事件繫結相當於另開了乙個執行緒,也就是說在elapsed繫結的事件裡不能訪問其它執行緒裡的控制項(需要定義委託,通過invoke呼叫委託訪問其它執行緒裡面的控制項)。
3、system.threading.timer類。定義該類時,通過建構函式進行初始化。
在上面所述的三種計時器中,第一種計時器和它所在的form處於同乙個執行緒,因此執行的效率不高;而第二種和第三種計時器執行的方法都是新開乙個執行緒,所以執行效率比第一種計時器要好,因此在選擇計時器時,建議使用第二種和第三種。
下面是三種定時器使用的例子:
1、timer控制項
設計介面:
後台**:
12、system.timers.timerusing
system;
2using
system.collections.generic;
3using
system.componentmodel;
4using
system.data;
5using
system.drawing;
6using
system.linq;
7using
system.text;
8using
system.windows.forms;910
namespace
timerdemo
1120
21private
void frmmain_load(object
sender, eventargs e)
2228
29private
void timer_tick(object
sender, eventargs e)
3034
35private
void btn_start_click(object
sender, eventargs e)
3640
41private
void btn_stop_click(object
sender, eventargs e)
4246
}47 }
設計介面:
後台**:
13、system.threading.timerusing
system;
2using
system.collections.generic;
3using
system.componentmodel;
4using
system.data;
5using
system.drawing;
6using
system.linq;
7using
system.text;
8using
system.windows.forms;910
namespace
timerstimer
1125
26private
void form1_load(object
sender, eventargs e)
2730
31///
32///
初始化timer控制項
33///
34private
void
inittimer()
3546
47///
48///
timer類執行定時到點事件
49///
50///
51///
52private
void timerup(object
sender, system.timers.elapsedeventargs e)
5359
catch
(exception ex)
6063}64
65///
66///
設定文字框的值
67///
68///
69private
void settextboxtext(string
strvalue)
7073
74private
void btn_start_click(object
sender, eventargs e)
7578
79private
void btn_stop_click(object
sender, eventargs e)
8083
}84 }
設計介面:
後台**:
1using
system;
2using
system.collections.generic;
3using
system.componentmodel;
4using
system.data;
5using
system.drawing;
6using
system.linq;
7using
system.text;
8using
system.windows.forms;
9using
system.threading;
1011
namespace
threading.timer
1226
27private
void frmmain_load(object
sender, eventargs e)
2831
32///
33///
初始化timer類
34///
35private
void
inittimer()
3639
40///
41///
定時到點執行的事件
42///
43///
44private
void timerup(object
value)
4549
50///
51///
給文字框賦值
52///
53///
54private
void settextboxvalue(object
value)
5558
59///
60///
開始61
///62
///63
///64
private
void btn_start_click(object
sender, eventargs e)
6569
70///
71///
停止72
///73
///74
///75
private
void btn_stop_click(object
sender, eventargs e)
7680
}81 }
C 裡面的三種定時計時器 TImer
timer控制項只有繫結了tick事件和設定timer.enabled ture後才會自動計時,停止計時可以用stop 方法控制,通過stop 方法來啟動計時器。timer控制項和它所在的form屬於同乙個執行緒 system.timers.timer類 定義乙個system.timers.time...
C 裡面的三種定時計時器 TIMER
在.net中有三種計時器 1 system.windows.forms命名空間下的timer控制項,它直接繼承自componet。timer控制項只有繫結了tick事件和設定enabled true後才會自動計時,停止計時可以用stop 方法控制,通過stop 停止之後,如果想重新計時,可以用sta...
C 裡面的三種定時計時器 Timer
在.net中有三種計時器 它直接繼承自componet。timer控制項只有繫結了tick事件和設定enabled true後才會自動計時,停止計時可以用stop 方法控制,通過stop 停止之後,如果想重新計時,可以用start 方法來啟動計時器。timer控制項和它所在的form屬於同乙個執行緒...