假设我有一个配置为10秒(10k毫秒)间隔的Windows窗体计时器:
myTimer.Interval = 10000;
我想要启动它并立即触发Tick
事件:
myTimer.Start();
myTimer_Tick(null, null);
最后一行代码可以工作,但是否有更好或更合适的方式呢?
我唯一会做的不同的事情是将实际的“Tick”功能移入一个单独的方法中,这样你就不必直接调用事件。
myTimer.Start();
ProcessTick();
private void MyTimer_Tick(...)
{
ProcessTick();
}
private void ProcessTick()
{
...
}
首先,直接调用事件似乎是一种代码异味——通常意味着代码结构混乱。
var Timer = new Timer(Timer_Elapsed, null, 0, 10000);
使用不同的计时器是有好处的,这篇文章详细讨论了它们。
使用两个计时器。
第一个计时器具有您想要使用的正常间隔,并仅启用第二个计时器。
第二个计时器的间隔为100毫秒,通常处于禁用状态。它运行您的代码,然后禁用自身。
要手动触发,请启用第二个计时器。
这还允许您使用完全限定名称到第二个计时器从另一个表单触发代码。我在从一个表单调用另一个表单时使用此功能。