我对在我的.NET应用程序中使用System.Timers.Timer有一个问题。
我有三个不同的事件,一个每秒触发一次,另一个每分钟触发一次,最后一个每半小时触发一次。
从性能角度来看,使用一个计时器还是三个更好?
使用一个计时器的方法是检查ElapsedEventArgs的SignalTime并将其与先前测量的时间进行比较。当然,如果您已更改DateTime,则这不太适用,但这不是问题所在。基本上,每秒钟它过期一次,我会检查是否已经过去了一分钟或半小时...
我的担忧是使用3个计时器会创建太多开销。我错了吗?应该使用3个以获得简单和清晰,还是1个计时器就足够了?
代码:
我有三个不同的事件,一个每秒触发一次,另一个每分钟触发一次,最后一个每半小时触发一次。
从性能角度来看,使用一个计时器还是三个更好?
使用一个计时器的方法是检查ElapsedEventArgs的SignalTime并将其与先前测量的时间进行比较。当然,如果您已更改DateTime,则这不太适用,但这不是问题所在。基本上,每秒钟它过期一次,我会检查是否已经过去了一分钟或半小时...
我的担忧是使用3个计时器会创建太多开销。我错了吗?应该使用3个以获得简单和清晰,还是1个计时器就足够了?
代码:
private void TimerEverySecondElapsed(object sender, ElapsedEventArgs e)
{
timerEverySecond.Enabled = false;
OnTimerElapsed(TimerType.EverySecond);
// Raise an event every minute
if ((e.SignalTime - previousMinute) >= minuteSpan)
{
OnTimerElapsed(TimerType.EveryMinute);
previousMinute = e.SignalTime;
}
// Raise an event every half hour
if ((e.SignalTime - previousHalfhour) >= semiHourSpan)
{
OnTimerElapsed(TimerType.EverySemiHour);
previousHalfhour = e.SignalTime;
}
timerEverySecond.Enabled = true;
}
minuteSpan
和 semiHourSpan
是只读的 TimeSpan。