在WPF 操作中引入延遲
在導航到後續視窗之前實現延遲的目標可以透過WPF 中的多種方法來實現。
問題概述:
在導航之前使用 Thread.Sleep 掛起執行緒會導致 UI 阻塞,導致 UI 元素在導航發生之前短暫顯示。
解決方案:
為了避免執行緒阻塞,您應該使用非同步等待技術,例如調度程式計時器或 Task.Delay。
方法1 : DispatcherTimer
建立一個間隔為2 秒的計時器,並加入一個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
使用Task.Delay暫停非同步作業2秒,然後顯示下一頁:
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 的情況下在 WPF 操作中引入延遲?的詳細內容。更多資訊請關注PHP中文網其他相關文章!