WPF での操作の遅延
WPF での操作の遅延は、ユーザー エクスペリエンスを向上させ、スムーズな移行を確保するために不可欠です。一般的なシナリオの 1 つは、新しいウィンドウに移動する前に遅延を追加することです。
これを実現するには、提供されたコード スニペットに示すように、Thread.Sleep がよく使用されます。ただし、Thread.Sleep で UI スレッドをブロックすると、遅延の進行中に UI が応答しなくなります。これは、次のページに移動する前に「2 分の遅延」というメッセージが簡単に表示されます。
この制限に対処するには、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 スレッドは応答性を維持し、新しいページにシームレスに移行する前に、遅延期間全体にわたって「2 秒の遅延」メッセージがユーザーに表示されます。
以上がWPF で操作を遅延するときに UI のフリーズを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。