在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()

  1. 不阻止UI线程
  2. 提供进度报告
  3. 可取消
  4. 支持多线程

回答:

使用.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

回到顶部