首页 >后端开发 >C++ >如何在 WPF 中执行带有进度报告和取消的后台任务?

如何在 WPF 中执行带有进度报告和取消的后台任务?

Linda Hamilton
Linda Hamilton原创
2025-01-07 14:48:43510浏览

How to Perform Background Tasks in WPF with Progress Reporting and Cancellation?

WPF 中的后台执行

在 WPF 应用程序中,可能会阻塞 UI 线程的任务应在后台执行。选择适当的方法时,请考虑线程阻塞、进度报告、取消和多线程支持等因素。

基于任务的 API 和 Async/Await

使用 .NET 4.5 或更高版本(或.NET 4.0 with Microsoft.Bcl.Async),使用 async/await 的基于任务的 API 为后台执行提供了最佳解决方案。它提供了方便且结构化的编码体验。

示例

以下代码演示了使用 async/await 在后台执行任务的示例:

private async void Start(object sender, RoutedEventArgs e)
{
    try
    {
        await Task.Run(() =>
        {
            int progress = 0;
            for (; ; )
            {
                Thread.Sleep(1);
                progress++;
                Logger.Info(progress);
            }
        });
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

此代码创建一个在后台运行的任务,允许通过进度变量报告进度并通过 CancellationTokenSource(不是

其他资源

更多信息和深入了解:

  • [如何在 WPF 后台执行任务,同时能够提供报告和允许取消?](https://stackoverflow.com/questions/498416/how-to-execute-task-in-the-wpf-background-while-able-to-provide-report-and-al)
  • 4.5 中的异步:在异步 API 中启用进度和取消(博客帖子)
  • [异步和等待](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/)
  • [异步/等待常见问题解答](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/async-faq)

以上是如何在 WPF 中执行带有进度报告和取消的后台任务?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn