Timer与DispatcherTimer的性能

K M*_*hta 9 c# silverlight wpf dispatchertimer

我没有考虑具体的情况,但是当我想到可能想要在DispatcherTimer上使用Timer的场景时,这个问题在我脑海中浮现.

在我必须执行计算密集型任务时,每当计时器事件触发,然后对UI 进行微小修改时,在性能方面会更好:

  1. 使用常规Timer,然后使用应用程序的Dispatcher更改UI
  2. 使用DispatcherTimer(如果需要,可能在某些异步后台工作程序中进行计算密集型工作).

我的猜测是尽可能长时间地保持UI线程不被阻塞将增强用户体验.如果这可取的,在这种情况下是否有任何我应该注意的捕获量?

编辑:

我觉得我的问题不够明确,所以我将尝试添加一个具体的,虽然是一个简单的例子.

假设我必须每2分钟读取一个大文件,当我完成后,我必须将一个项目添加到ListBox.假设读取/处理文件需要10-15秒,在此期间我没有UI工作.对于这样的事情,最好的方法是什么?

Hen*_*man 5

要点:

执行计算密集型任务

这表示使用DispatcherTimer.它主要用于在主线程上执行小任务,避免创建另一个线程.

如果您使用DispatcherTimer启动Backgroundworker,那么您将绕过它的主要目的.

所以在这里只需使用常规定时器.


K M*_*hta 2

经过更多的研究和分析,我得出的结论是,在我编造的示例中,常规计时器效果最好。到目前为止,我还没有必要寻找任何可能导致我的代码出现潜在问题的具体内容。话虽如此,良好的编码实践永远不会有坏处!