在 WPF 應用程式中,可能會阻塞 UI 執行緒的任務應在背景執行。選擇適當的方法時,請考慮執行緒阻塞、進度報告、取消和多執行緒支援等因素。
使用.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 中執行具有進度報告和取消的背景任務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!