WPF 中的延遲操作
WPF 中的延遲操作對於增強用戶體驗和確保平滑過渡至關重要。常見的情況是在導航到新視窗之前添加延遲。
為了實現此目的,經常使用 Thread.Sleep,如提供的程式碼片段所示。但是,在延遲過程中,使用 Thread.Sleep 阻塞 UI 執行緒會導致 UI 無回應。這表現為在導航到下一頁之前短暫顯示「兩分鐘延遲」訊息。
要解決此限制,建議使用非同步技術,例如 DispatcherTimer、Task.Delay 或 async/await。
方法 1:使用 DispatcherTimer
DispatcherTimer 類別提供了一種在指定時間間隔後執行操作的方法。
tbkLabel.Text = "two seconds delay"; var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(2) }; timer.Start(); timer.Tick = (sender, args) => { timer.Stop(); var page = new Page2(); page.Show(); };
方法 2:使用 Task.Delay
Task.Delay 是一種傳回在指定延遲後完成的任務的方法。
tbkLabel.Text = "two seconds delay"; Task.Delay(2000).ContinueWith(_ => { var page = new Page2(); page.Show(); });
方法3:使用Async/Await(需要.NET 4.5或更高版本)
Async/await語法提供了一種更優雅、更易讀取的方式來處理非同步操作。
public async void TheEnclosingMethod() { tbkLabel.Text = "two seconds delay"; await Task.Delay(2000); var page = new Page2(); page.Show(); }
透過使用這些非同步技術,UI 執行緒保持回應,使用者在無縫轉換到新頁面之前的整個延遲期間都會看到「兩秒延遲」訊息。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3