假设我有一个配置了10秒(10k ms)间隔的Windows窗体计时器:
myTimer.Interval = 10000;
Run Code Online (Sandbox Code Playgroud)
我想启动它并Tick
马上启动它:
myTimer.Start();
myTimer_Tick(null, null);
Run Code Online (Sandbox Code Playgroud)
最后一行有效,但是有更好或更合适的方式吗?
Bev*_*van 32
我唯一不同的做法是将实际的Tick功能移动到一个单独的方法中,这样您就不必直接调用该事件.
myTimer.Start();
ProcessTick();
private void MyTimer_Tick(...)
{
ProcessTick();
}
private void ProcessTick()
{
...
}
Run Code Online (Sandbox Code Playgroud)
首先,我这样做是因为事件的直接调用在我看来是一个代码气味 - 通常它表示spagetti结构代码.
.NET中至少有4个不同的"定时器".使用System.Threading你可以得到一个特别允许你设置初始延迟的.
var Timer = new Timer(Timer_Elapsed, null, 0, 10000);
Run Code Online (Sandbox Code Playgroud)
使用不同的计时器有好处,这里有一篇很好的文章讨论它们.
归档时间: |
|
查看次数: |
38288 次 |
最近记录: |