我在WPF应用程序中遇到了一件奇怪的事情。我已经尝试了DispatcherTimer和System.Timers.Timer类,并比较了用秒表花费的时间。当我使用DispatcherTimer时,我的应用程序和秒表显示的间隔似乎几乎没有差异(测试30分钟)。但是当我使用另一个Timer时,我的应用程序会大大浪费时间。我可以使用DispatcherTimer,但问题是:当我从其他地方更新我的UI时,调度程序计时器似乎冻结了该特定时间间隔,因此,它也会浪费时间。为什么会发生这种情况以及如何纠正它?
答案 0 :(得分:1)
在评论中,@ Joey建议Comparing Timer with DispatcherTimer问题的答案可能有所帮助。您的回复是
不,我在阅读该链接后实际发布了。我不知道为什么System.Threading.Timer会失去这么多时间。 3秒。在5分钟。如果我的其他一些过程导致了这种延迟,那么它也应该反映在调度员中,我想
但是,如果你已经阅读了链接问题的答案,那么你已经得到了答案。如上所述,这是因为Timer
类已经过优化,可以在Windows窗体应用程序上运行,并且您在WPF应用程序上使用它。这有点像在沙滩上驾驶汽车......我们不应该这样做,我们可能会得到意想不到的结果。
我的建议是,您只需使用正确的工具即可完成工作。还值得注意的是,没有计算机计时器,甚至是用于获得测试结果的Stopwatch
类,都是100%准确的,因为它运行的处理器也将是用于同时运行许多其他线程。