Maison >développement back-end >C++ >Comment introduire des retards dans les opérations WPF sans bloquer le thread de l'interface utilisateur ?
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.
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(); };
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.
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 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!