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

Guy*_*Guy 2 c# wpf

从VB6开始,我很少在C#中使用DoEvents()方法.

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

我注意到人们使用这个函数(Application.DoEvents方法):

Application.DoEvents()
Run Code Online (Sandbox Code Playgroud)

但这适合Windows Forms.

现在我正在使用WPF.

WPF中有类似的方法吗?

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

谢谢.

Jon*_*eet 5

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

这个.

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

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

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

  • 明确地创建一个新线程
  • 显式使用线程池
  • 运用 BackgroundWorker
  • 使用任务并行库(TPL) - 需要.NET 4+
  • 使用异步API,这在.NET 4.5/C#5中简单得多