嘗試在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 或更高版本的項目,非同步/等待模式提供了一種簡潔便捷的方式來處理延遲:
public async void TheEnclosingMethod() { tbkLabel.Text = "two seconds delay"; await Task.Delay(2000); var page = new Page2(); page.Show(); }
透過利用非同步技術,開發人員可以將延遲引入到WPF 操作不會影響UI 回應能力。
以上是如何在不阻塞 UI 執行緒的情況下在 WPF 操作中引入延遲?的詳細內容。更多資訊請關注PHP中文網其他相關文章!