BackgroundWorker

在 UI 线程中执行长时间运行的操作可能会导致应用程序无响应,向用户显示它已停止工作。这些任务最好在后台线程上运行。完成后,可以更新 UI。

在 BackgroundWorker 的操作期间更改 UI 需要调用 UI 线程的更改,通常是通过在要更新的控件上使用 Control.Invoke 方法。忽略这样做会导致程序抛出异常。

BackgroundWorker 通常仅用于 Windows 窗体应用程序。在 WPF 应用程序中,任务用于将工作卸载到后台线程(可能与 async / await结合使用 )。当正在更新的属性实现 INotifyPropertyChanged 时 ,或者通过使用 UI 线程的 Dispatcher手动完成对 UI 线程的编组更新通常是自动完成的。