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
Libérer: 2024-11-03 11:35:29
original
611 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal