正确使用与WPF兼容的DoEvents()

时间:2013-01-20 09:17:05

标签: c# wpf

由于VB6我很少在C#中使用DoEvents()方法。

我现在需要为同样的目的使用相同的功能

我注意到人们使用此功能(Application.DoEvents Method ):

Application.DoEvents()

但这适合Windows窗体。

现在我正在使用WPF。

WPF中是否有类似的方法?

或许我不应该再使用这种方法了?

感谢。

1 个答案:

答案 0 :(得分:5)

  

或许我不应该再使用这种方法了?

此。

基本上,使用Application.DoEvents()几乎总是表明你有一个长期运行的任务应该在不同的线程上执行,回调到UI线程需要UI访问的地方。

Application.DoEvents()基本上是人们在不想花时间做正确事情时使用的黑客 - 至少在绝大多数情况下都是如此。

有多种方法可以编写与UI交互的长时间运行的任务,具体取决于您使用的语言/框架的版本以及长期运行的任务所包含的内容。要考虑的选项:

  • 明确创建新主题
  • 明确使用线程池
  • 使用BackgroundWorker
  • 使用任务并行库(TPL) - 需要.NET 4 +
  • 使用异步API,从.NET 4.5 / C#5开始, 更简单