我想每晚午夜触发KillZombies.我遇到的问题是第一个定时器间隔被保留,并且没有重置为86400000毫秒,正如我在我的方法中尝试做的那样.
有没有办法删除旧间隔并用新的间隔替换它?
System.Timers.Timer Timer = new System.Timers.Timer();
Timer.Elapsed += new ElapsedEventHandler(KillZombies);
Timer.Interval = MillisecondsToMidnight;
Timer.Start()
private void KillZombies(object source, ElapsedEventArgs e)
{
//Kill zombies
Timer.Interval = 86400000; //Milliseconds per 24 hours
}
Run Code Online (Sandbox Code Playgroud)
FWIW,在使用Timers时,我总是将AutoReset属性设置为false.这可以防止计时器再次启动,因此您必须调用Timer.Start()才能让它再次开始计数.这样可以避免额外的呼叫Stop()
另外,为了明确,我将有一个函数,每次计算毫秒到午夜,并每次将其分配给计时器的间隔.会让你的代码更清晰.而且,如果您使用Timer.AutoRest = false,计时器将不会开始计数,直到您调用Timer.Start(),这意味着如果您Start()在KillZombies方法结束时调用该方法并且该方法需要5秒钟才能执行,那么您的计时器应该是86400000 - 5000.随着时间的推移,这5秒的转变会增加.
| 归档时间: |
|
| 查看次数: |
7436 次 |
| 最近记录: |