关于C#中timer类 在C#里关于定时器类就有4个
1、System.Windows.Forms:【基于UI】
System.Windows.Forms命名空间下的Timer控件,它直接继承自Componet。Timer控件只有绑定了Tick事件和设置Enabled=True后才会自动计时,停止计时可以用Stop()方法控制,通过Stop()停止之后,如果想重新计时,可以用Start()方法来启动计时器。Timer控件和它所在的Form属于同一个线程;
2、System.Timers.Timer:【基于服务】
System.Timers命名空间下的Timer类。System.Timers.Timer类:定义一个System.Timers.Timer对象,然后绑定Elapsed事件,通过Start()方法来启动计时,通过Stop()方法或者Enable=false停止计时。AutoReset属性设置是否重复计时(设置为false只执行一次,设置为true可以多次执行)。Elapsed事件绑定相当于另开了一个线程,也就是说在Elapsed绑定的事件里不能访问其它线程里的控件(需要定义委托,通过Invoke调用委托访问其它线程里面的控件)。
3、System.Threading.Timer:【基于线程】
System.Threading.Timer类。定义该类时,通过构造函数进行初始化。
在上面所述的三种计时器中,第一种计时器和它所在的Form处于同一个线程,因此执行的效率不高;而第二种和第三种计时器执行的方法都是新开一个线程,所以执行效率比第一种计时器要好,因此在选择计时器时,建议使用第二种和第三种。
4、System.Windows.Threading.DispatcherTimer
DispatcherTimer:Dispatcher队列中的计时器,不能保证正好在设置的时间间隔发生时执行计时器,但能保证不会在时间间隔发生之前执行计时器。这是因为 DispatcherTimer的操作也是放置在Dispatcher队列中的,何时执行DispatcherTimer操作取决于队列中其他作业及其优先级。
private readonly System.Timers.Timer timerCurrStatus;
public Form1()
{
timerCurrStatus = new System.Timers.Timer(1000);
timerCurrStatus.Elapsed += timerCurrStatusElapsed;
}
private void timerCurrStatusElapsed(object sender, ElapsedEventArgs e)
{
://to do something
}
private void CardInit()
{
timerCurrStatus.Enabled = true; // 打开定时器
}
private void CardExit()
{
timerCurrStatus.Enabled = false;//退出定时器
}
标签:控件,定时器,Timers,C#,System,Timer,线程,计时器 From: https://www.cnblogs.com/buukma/p/17305335.html