ホームページ >バックエンド開発 >C++ >UI スレッドをブロックせずに WPF で操作を非同期的に遅延させる方法は?

UI スレッドをブロックせずに WPF で操作を非同期的に遅延させる方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 11:35:29612ブラウズ

How to Delay an Operation Asynchronously in WPF without Blocking the UI Thread?

WPF で操作を非同期に遅延さ​​せる方法

操作に遅延を作成しようとすると、Thread.Sleep を使用すると、 UI スレッドがブロックされています。これを克服するには、非同期手段を使用する必要があります。

1 つの方法は、DispatcherTimer を利用することです:

<code class="csharp">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();
};</code>

もう 1 つのオプションは、Task.Delay を使用することです:

<code class="csharp">tbkLabel.Text = "two seconds delay";

Task.Delay(2000).ContinueWith(_ =>
{
    var page = new Page2();
    page.Show();
});</code>

.NET 4.5 以降では、async/await を使用できます。

<code class="csharp">// Add async keyword to the method signature
public async void TheEnclosingMethod()
{
    tbkLabel.Text = "two seconds delay";

    await Task.Delay(2000);
    var page = new Page2();
    page.Show();
}</code>

非同期メソッドを実装することで、遅延期間中 UI スレッドの応答性が維持され、ウィンドウ間のシームレスな移行が可能になります。

以上がUI スレッドをブロックせずに WPF で操作を非同期的に遅延させる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。