如果应用程序在后台连续运行(不管间隔时间),那么定时器会导致多少开销?
我并不担心定时器在打勾时会发出的呼叫,而是担心在性能最重要的应用中使用定时器的性能影响,并且我很想知道它有什么观点。
答案 0 :(得分:8)
计时器在它的滴答声之间为应用程序增加了极低的成本。它使用操作系统的调度机制(无论您的操作如何都是活动的),而不是直观地轮询系统时钟的直观概念。
基本上,除了增加的内存和上下文切换数据添加(在这种情况下是少量添加。不应该只是在表单中添加一个按钮),不应该有任何更多的开销。
答案 1 :(得分:0)
Timer调用的事件将在定时器所属的同一个线程中运行,因此在执行任何逻辑时将阻塞该线程。这意味着如果Timer属于GUI层,Timer.Tick方法的执行将在GUI运行时锁定它。
为了保持主线程的性能,我建议使用BackgroundWorker
代替它在自己的线程中运行。
答案 2 :(得分:0)
以同样的方式回答:定时器对于gui编程非常有用,但对于高性能任务来说几乎没用。计时器的一些问题:
如果您正在考虑使用其他线程进行某些操作,请确保不要触摸任何gui组件。使用Invoke()或将gui的更新复制到某个队列,然后使用gui主线程中的计时器将其出列。