"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment introduire des retards dans les opérations WPF sans bloquer le thread de l'interface utilisateur ?

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

Publié le 2024-11-20
Parcourir:593

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 tentez 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();
};

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();
});

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();
}

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

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3