如何以编程方式触发计时器?
假设我有一个配置了10秒(10k ms)间隔的Windows窗体计时器:
myTimer.Interval = 10000;
我想启动它并立即启动Tick
事件:
myTimer.Start(); myTimer_Tick(null, null);
最后一行有效,但有更好或更合适的方式吗?
我唯一不同的做法是将实际的Tickfunction移动到一个单独的方法中,这样您就不必直接调用该事件。
myTimer.Start(); ProcessTick(); private void MyTimer_Tick(...) { ProcessTick(); } private void ProcessTick() { ... }
首先,我这样做是因为事件的直接调用在我看来是一个代码气味 – 通常它表示spagetti结构代码。
.NET中至少有4个不同的“定时器”。 使用System.Threading你可以得到一个专门允许你设置初始延迟的。
var Timer = new Timer(Timer_Elapsed, null, 0, 10000);
使用不同的计时器有好处, 这里有一篇很好的文章讨论它们。
您可以将间隔设置为1(0可能意味着无限超时),并在第一次打勾时将其设置为10k。
计时器将“很快”打勾(取决于您使用的计时器类型,请参阅此计划 ),但执行将不会像解决方案中那样继续使用单击处理程序。
(我想你知道Bevan的解决方案)。