问题描述:在线程里有一个需要倒计时的功能,本来使用工具栏里的Timer控件,结果发现无法进入Timer的循环方法,单独拿出来调试Timer控件时,发现正常使用ok的,怀疑是线程与Timer的问题。
查阅相关资料后发现:
其他线程是无法控制Form下的Timer,一般可使用System.Timer或System.Threading.Timer 代替。
一定要用Form下的Timer的话,用异步委托来实现!
解决方法:
使用System.Timer.Timer来代替,功能ok。
ps:
C#中timer类的用法:
关于C#中timer类
1.定义在System.Windows.Forms里
2.定义在System.Threading.Timer类里
3.定义在System.Timers.Timer类里
System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API
System.Timers.Timer和System.Threading.Timer非常类似,它们是通过.NET
例:
使用System.Timers.Timer类
//实例化Timer类,设置间隔时间为10000毫秒;
System.Timers.Timer t = new System.Timers.Timer(10000);
//到达时间的时候执行事件;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
====================================
自己写的一个用System.Timer类的方法
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49