當嘗試在WPF 中執行操作之前引入延遲時,避免使用Thread.Sleep 很重要,因為這方法會阻塞UI 執行緒並可能導致使用者介面無回應。相反,請考慮利用非同步程式技術。
一個選擇是使用 DispatcherTimer。此計時器在 UI 執行緒上運行,並在指定的時間間隔後呼叫其 Tick 事件處理程序:
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(); };
另一種方法涉及使用 Task.Delay:
tbkLabel.Text = "two seconds delay"; Task.Delay(2000).ContinueWith(_ => { var page = new Page2(); page.Show(); });
這裡,程式建立一個任務,該任務在 2 秒延遲後完成,然後呼叫延續委託來顯示新頁面。
最後,對於面向.NET 4.5 或更高版本的項目,async/await 模式提供了一種簡潔且方便的方法來處理延遲:
public async void TheEnclosingMethod() { tbkLabel.Text = "two seconds delay"; await Task.Delay(2000); var page = new Page2(); page.Show(); }
透過利用非同步技術,開發人員可以在 WPF 作業中引入延遲,而不會影響 UI 回應能力。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3