在WPF应用程序中在后台执行任务
例
private void Start(object sender, RoutedEventArgs e){
int progress = 0;
for (;;)
{
System.Threading.Thread.Sleep(1);
progress++;
Logger.Info(progress);
}
}
什么是如果我想推荐的方法(TAP或TPL或BackgroundWorker的或发货或其他人)Start()
到
- 不阻止UI线程
- 提供进度报告
- 可取消
- 支持多线程
回答:
使用.NET 4.5(或.NET 4.0 +
Microsoft.Bcl.Async),最好的方法是使用Task
基于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);
}
}
更多阅读:
如何在WPF后台执行任务同时提供报告并允许取消?
。
异步并等待。
异步/等待常见问题解答。
以上是 在WPF应用程序中在后台执行任务 的全部内容, 来源链接: utcz.com/qa/428697.html