ホームページ > バックエンド開発 > C++ > UI をブロックせずに WPF 操作に遅延を導入するにはどうすればよいですか?

UI をブロックせずに WPF 操作に遅延を導入するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-04 02:18:01
オリジナル
209 人が閲覧しました

How to Introduce Delays in WPF Operations Without Blocking the UI?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート