在 WPF 应用程序中执行后台任务
在 WPF 应用程序中,通常需要在后台执行任务以避免冻结用户界面 (用户界面)。为此,开发人员需要一种满足以下条件的机制:
推荐方法:基于任务API 和 Async/Await
随着 .NET 4.5(或带有 Microsoft.Bcl.Async 库的 .NET 4.0)的发布,后台任务的推荐方法是利用基于任务的 API和异步/等待。该技术具有以下优点:
示例实现
以下代码演示了如何使用基于任务的 API 和 async/await 执行后台任务:
private async void Start(object sender, RoutedEventArgs e) { try { await Task.Run(() => { int progress = 0; for (; ; ) { System.Threading.Thread.Sleep(1); progress++; Logger.Info(progress); } }); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
此代码与 UI 线程并行生成一个新任务,允许 UI 在后台任务进行时保持响应。它还包括异常处理,以便在任务执行期间发生异常时显示错误消息。
其他资源
有关在带有进度报告的 WPF 中执行后台任务的更多信息和取消支持,请考虑以下参考:
以上是如何在 WPF 应用程序中执行后台任务而不冻结 UI?的详细内容。更多信息请关注PHP中文网其他相关文章!