WPF 操作での遅延の紹介
後続のウィンドウに移動する前に遅延を実装するという目的は、WPF のいくつかのアプローチで達成できます。
問題の概要:
移動前に Thread.Sleep を使用してスレッドを一時停止すると、UI がブロックされ、ナビゲーションが行われる前に UI 要素が一時的に表示されます。
解決策:
スレッドのブロックを回避するには、ディスパッチャー タイマーや Task.Delay などの非同期待機テクニックを利用する必要があります。
方法 1 : DispatcherTimer
2 秒間隔のタイマーを作成し、間隔が経過したときにタイマーを停止して 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(); };
方法 2: 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 中国語 Web サイトの他の関連記事を参照してください。