例
private void Start(object sender, RoutedEventArgs e) { int progress = 0; for (;;) { System.Threading.Thread.Sleep(1); progress++; Logger.Info(progress); } }
什么是如果我想推荐的方法(TAP或TPL或BackgroundWorker的或发货或其他人)Start()到
Start()
使用.NET 4.5(或.NET 4.0 + Microsoft.Bcl.Async),最好的方法是使用Task基于API和的API async/await。它允许使用方便的(伪)顺序代码工作流程,并具有结构化的异常处理。
Task
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后台执行任务同时提供报告并允许取消?
4.5中的Async:在Async API中启用进度和取消 。
异步并等待。
异步/等待常见问题解答。