Maison >développement back-end >C++ >Comment retarder une opération de manière asynchrone dans WPF sans bloquer le thread de l'interface utilisateur ?

Comment retarder une opération de manière asynchrone dans WPF sans bloquer le thread de l'interface utilisateur ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 11:35:29612parcourir

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

Comment retarder une opération de manière asynchrone dans WPF

Lorsque vous tentez de créer un retard dans une opération, l'utilisation de Thread.Sleep peut entraîner le Le fil de l'interface utilisateur est bloqué. Pour surmonter cela, des moyens asynchrones doivent être utilisés.

Une approche consiste à utiliser un 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>

Une autre option consiste à utiliser Task.Delay :

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

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

Pour .NET 4.5 et versions ultérieures, async/await peut être utilisé :

<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>

En implémentant méthodes asynchrones, le thread de l'interface utilisateur reste réactif pendant la période de retard, permettant des transitions transparentes entre les fenêtres.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn