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

Susan Sarandon
リリース: 2024-11-01 03:45:28
オリジナル
726 人が閲覧しました

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

代替アプローチによる WPF 操作の遅延の実現

WPF で操作を実行する前に遅延を導入しようとする場合、次のように Thread.Sleep の使用を避けることが重要です。このアプローチは UI スレッドをブロックし、ユーザー インターフェイスが応答しなくなる可能性があります。代わりに、非同期プログラミング手法の活用を検討してください。

DispatcherTimer アプローチ

1 つのオプションは、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 アプローチ

別のアプローチには、Task.Delay の使用が含まれます:

tbkLabel.Text = "two seconds delay";

Task.Delay(2000).ContinueWith(_ => {
    var page = new Page2();
    page.Show();
});
ログイン後にコピー

ここで、プログラムは 2 秒の遅延後に完了するタスクを作成し、継続デリゲートを呼び出して新しいページを表示します。

非同期/待機アプローチ (.NET 4.5 以降の場合)

最後に、.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 操作。

以上がUI スレッドをブロックせずに WPF 操作に遅延を導入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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