2012-08-07 56 views
0

我有一个Windows窗体应用程序在一段时间后重复调用方法。所以我担心CPU使用率。我知道两种方法可以做到这一点:在特殊时间运行某种方法的更好方法是什么?

1)使用Timer组件
2)在一个循环

那么,哪一个更好调用Thread.Sleep(time)?哪些使用CPU较少或没有使用CPU?

+0

试试看并找出答案。 – 2012-08-07 22:36:26

+0

WinForms? WPF?你已经尝试过的更多细节越好......就目前来看,这不是一个非常有建设性的问题。他们都会为你做这项工作,而且你不可能让某人列出一些旧技术的优点和缺点,这些技术你可以很容易地只是谷歌(或者[在这里搜索])(http:// stackoverflow。 com/questions/6265789/thread-vs-timer-in-c-sharp))并找出你自己。 – 2012-08-07 22:36:40

+0

[C#Timer或Thread.Sleep]的可能重复(http://stackoverflow.com/questions/1091710/c-sharp-timer-or-thread-sleep) – gkaran89 2012-08-07 22:39:45

回答

1

这并不重要,因为即使将循环设置为1ms,也无法真正衡量CPU使用率。这会很低。

由于可靠性,可维护性和可读性的原因,您应该使用System.Windows.Forms.Timer

1

如果你想要每隔一段时间周期性地执行某个代码块,那么就使用它为此设计的计时器。有一点CPU架构知识向您显示,通用定时器不会消耗任何处理器或OS资源来生成准确的时间延迟。

另一方面,维护处于挂起状态的线程并将其切换到执行状态并将其排入就绪队列将占用CPU和OS资源。

相关问题