在 WPF 应用程序的后台执行任务 [英] Execute task in background in WPF application
本文介绍了在 WPF 应用程序的后台执行任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
示例
private void Start(object sender, RoutedEventArgs e)
{
int progress = 0;
for (;;)
{
System.Threading.Thread.Sleep(1);
progress++;
Logger.Info(progress);
}
}
如果我想让 Start()
- 不阻塞 UI 线程
- 提供进度报告
- 可取消
- 支持多线程
推荐答案
使用 .NET 4.5(或 .NET 4.0 + Microsoft.Bcl.Async),最好的方法是使用基于 Task
的 API 和 async/await
.它允许使用方便的(伪)顺序代码工作流并具有结构化的异常处理.
With .NET 4.5 (or .NET 4.0 + Microsoft.Bcl.Async), the best way is to use Task
-based API and async/await
. It allows to use the convenient (pseudo-)sequential code workflow and have structured exception handling.
示例:
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);
}
}
更多阅读:
这篇关于在 WPF 应用程序的后台执行任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文