2

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

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

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

Application.DoEvents()

但这适合 Windows 窗体。

现在我正在使用 WPF。

WPF中有类似的方法吗?

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

谢谢。

4

1 回答 1

5

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

这。

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

Application.DoEvents()基本上是人们在不想花时间正确做事时使用的一种技巧——至少在绝大多数情况下是这样。

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

  • 显式创建一个新线程
  • 显式使用线程池
  • 使用BackgroundWorker
  • 使用任务并行库 (TPL) - 需要 .NET 4+
  • 使用异步 API,从 .NET 4.5 / C# 5 开始要简单得多
于 2013-01-20T09:19:07.823 回答