Maison > développement back-end > C++ > le corps du texte

Comment introduire des retards dans les opérations WPF sans bloquer le thread de l'interface utilisateur ?

Susan Sarandon
Libérer: 2024-11-01 03:45:28
original
670 Les gens l'ont consulté

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

Obtenir des retards dans les opérations WPF avec des approches alternatives

Lorsque vous essayez d'introduire un délai avant l'exécution d'une opération dans WPF, il est important d'éviter d'utiliser Thread.Sleep, car cela Cette approche bloque le thread de l'interface utilisateur et peut conduire à des interfaces utilisateur qui ne répondent pas. Envisagez plutôt de tirer parti des techniques de programmation asynchrone.

Approche DispatcherTimer

Une option consiste à utiliser un DispatcherTimer. Ce minuteur s'exécute sur le thread de l'interface utilisateur et appelle son gestionnaire d'événements Tick après un intervalle spécifié :

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();
};
Copier après la connexion

Approche Task.Delay

Une autre approche consiste à utiliser Task.Delay :

tbkLabel.Text = "two seconds delay";

Task.Delay(2000).ContinueWith(_ => {
    var page = new Page2();
    page.Show();
});
Copier après la connexion

Ici, le programme crée une tâche qui se termine après un délai de 2 secondes, puis appelle le délégué de continuation pour afficher la nouvelle page.

Approche Async/Await (pour .NET 4.5 et versions ultérieures)

Enfin, pour les projets ciblant .NET 4.5 ou version ultérieure, le modèle async/wait fournit un moyen concis et pratique de gérer les retards :

public async void TheEnclosingMethod()
{
    tbkLabel.Text = "two seconds delay";

    await Task.Delay(2000);
    var page = new Page2();
    page.Show();
}
Copier après la connexion

En tirant parti des techniques asynchrones, les développeurs peuvent introduire des retards dans Opérations WPF sans compromettre la réactivité de l'interface utilisateur.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!