一个定时器与三个定时器的性能

我有一个关于System.Timers.Timer在我的.NET应用程序中的用法的问题。

我有三个不同的事件,一个触发每秒,另一个触发每分钟,最后一个触发每半小时。

有一个或三个计时器是更好还是更好?

用一个定时器做的方法是检查ElapsedEventArgs的SignalTime并将其与先前测量的时间进行比较。 当然,如果你已经改变了日期时间,这并不是很有效,但这不是问题。 基本上它每隔一秒钟就过去一次,我检查一分钟或半小时是否已经过去了......

我担心的是使用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;
    }

minuteSpansemiHourSpan只读TimeSpans。


这两种方式都没有太大的区别。 不管定时器的数量是多少,只有一个循环在后台进行。 在效率最低的时候,你将使用线程池中的3个线程,但是有很多可用的,所以这不是什么大问题。 如果它让你的代码更容易阅读,我会说它去。

请记住,这只适用于Threading.Timer (也Timers.Timer )。 Forms.Timer行为有点不同,它可能会更好地坚持其中的一个,因为它只在UI线程上运行,所以你可能会遇到一些同步问题。

Threading.Timer与Forms.Timer

一些更多资源:

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/f9a1c67d-8579-4baa-9952-20b3c0daf38a/

我可以创建多少个System.Timers.Timer实例? 我可以扩展多少?


3与1相比,定时器的开销增加很少,代码很可能会更好一些(在可读性和可维护性方面)


我认为检查if是否比三个定时器花费更多,除此之外,你可能会遇到一些奇怪的情况,试图使用一个定时器。

我会与三个计时器一起去。

链接地址: http://www.djcxy.com/p/63019.html

上一篇: One Timer vs Three Timers Performance

下一篇: Is there other way to set long Timer Interval