哪个 C# 定时器?

Chr*_*ris 5 .net c# timer

我正在编写一个包含计时器的类(最重要的是,它可能不会在 0 处初始化,它可能已经开始计时),并且该类将包含 Start、Pause、Resume 和 Stop/Complete 方法。我知道我可以使用 C# 中的许多计时器,即 System.Timers.Timer,但是我不确定这个计时器是否可以让我以预定义的经过时间启动计时器。

对于这种情况什么是最好的?

dca*_*tro 5

不要使用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();
Run Code Online (Sandbox Code Playgroud)