哪个C#计时器?

我正在写一个包含一个计时器的类(关键时刻可能不会在0处初始化,它可能已经开始),该类将包括启动,暂停,恢复和停止/完成的方法。 我知道我可以使用C#中的一些定时器,即System.Timers.Timer,但是我不确定这个是否允许我以预定义的经过时间的数字启动定时器。

这种情况最好的是什么?

不要使用System.Windows.Forms.Timer – 这个将在窗体的UI线程上运行委托,这可能不是你想要的。

System.Timers.Timer派生自System.ComponentModel.Component ,因此它面向设计图面。

System.Threading.Timer最适合线程池上的后台任务。

System.Threading.Timer满足您的所有要求(假设您尝试在线程池上运行委托)。

 public void MyCallback(object o) { ... } int timeToStart = 1000; int period = 2000; //fire the delegate after 1 second, and every 2 seconds from then on Timer timer = new Timer(MyCallback, null, timeToStart, period); //pause timer.Change(Timeout.Infinite, Timeout.Infinite); //resume timer.Change(timeToStart, period); //stop timer.Dispose(); 

System.Forms.Timer类实际上用于UI端,并且比System.Timers.Timer类更不准确和优化。

Forms.Timer在UI线程(主线程)上运行,因此UI任务需要时间,Timer类在不同的线程上运行,导致主线程无负载。

Timers.Timer类还包含您想要的所有事件,请查看以下链接以获取有关事件的更多详细信息

http://msdn2.microsoft.com/en-us/library/system.windows.forms.timer.aspx

http://msdn2.microsoft.com/en-us/library/system.timers.timer.aspx

使用System.Timers.Timer

根据您的间隔,您可以将定时器间隔设置为1秒(或10或1分钟),并且每次检查您自己的经过条件是否通过。 基本上你是在检查自己是否需要做某事。 这样,你可以开始一段时间’进入’间隔。