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

2021-09-07 12:43:34 字數 4217 閱讀 2824

在.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控制項

設計介面:

後台**:

1

using

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 }

2、system.timers.timer

設計介面:

後台**:

1

using

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 }

3、system.threading.timer

設計介面:

後台**:

1

using

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屬於同乙個執行緒...