C 裡面的三種定時計時器 Timer

2022-02-16 18:43:40 字數 4206 閱讀 9697

在.net中有三種計時器:

它直接繼承自componet。timer控制項只有繫結了tick事件和設定enabled=true後才會自動計時,停止計時可以用stop()方法控制,通過stop()停止之後,如果想重新計時,可以用start()方法來啟動計時器。timer控制項和它所在的form屬於同乙個執行緒;

system.timers.timer類:定義乙個system.timers.timer物件,然後繫結elapsed事件,通過start()方法來啟動計時,通過stop()方法或者enable=false停止計時。autoreset屬性設定是否重複計時(設定為false只執行一次,設定為true可以多次執行)。elapsed事件繫結相當於另開了乙個執行緒,也就是說在elapsed繫結的事件裡不能訪問其它執行緒裡的控制項(需要定義委託,通過invoke呼叫委託訪問其它執行緒裡面的控制項)。

在上面所述的三種計時器中,第一種計時器和它所在的form處於同乙個執行緒,因此執行的效率不高;而第二種和第三種計時器執行的方法都是新開乙個執行緒,所以執行效率比第一種計時器要好,因此在選擇計時器時,建議使用第二種和第三種。

下面是三種定時器使用的例子:

設計介面:

後台**:

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 10 namespace timerdemo

11 20

21 private void frmmain_load(object sender, eventargs e)

22

28 29 private void timer_tick(object sender, eventargs e)

30

34 35 private void btn_start_click(object sender, eventargs e)

36

40 41 private void btn_stop_click(object sender, eventargs e)

42

46 }

47 }

設計介面:

後台**:

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 10 namespace timerstimer

11 25

26 private void form1_load(object sender, eventargs e)

27

30 31 /// 32 /// 初始化timer控制項

33 ///

34 private void inittimer()

35

46 47 /// 48 /// timer類執行定時到點事件

49 ///

50 ///

51 ///

52 private void timerup(object sender, system.timers.elapsedeventargs e)

53

59 catch (exception ex)

60

63 }

64 65 /// 66 /// 設定文字框的值

67 ///

68 ///

69 private void settextboxtext(string strvalue)

70

73 74 private void btn_start_click(object sender, eventargs e)

75

78 79 private void btn_stop_click(object sender, eventargs e)

80

83 }

84 }

設計介面:

後台**:

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 threading.timer

12 26

27 private void frmmain_load(object sender, eventargs e)

28

31 32 /// 33 /// 初始化timer類

34 ///

35 private void inittimer()

36

39 40 /// 41 /// 定時到點執行的事件

42 ///

43 ///

44 private void timerup(object value)

49 50 /// 51 /// 給文字框賦值

52 ///

53 ///

54 private void settextboxvalue(object value)

55

58 59 /// 60 /// 開始

61 ///

62 ///

63 ///

64 private void btn_start_click(object sender, eventargs e)

65

69 70 /// 71 /// 停止

72 ///

73 ///

74 ///

75 private void btn_stop_click(object sender, eventargs e)

76

80 }

81 }

C 裡面的三種定時計時器 Timer

在.net中有三種計時器 1 system.windows.forms命名空間下的timer控制項,它直接繼承自componet。timer控制項只有繫結了tick事件和設定enabled true後才會自動計時,停止計時可以用stop 方法控制,通過stop 停止之後,如果想重新計時,可以用sta...

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...