Retarder les opérations dans WPF
Retarder une opération dans WPF est essentiel pour améliorer l'expérience utilisateur et garantir des transitions fluides. Un scénario courant consiste à ajouter un délai avant de naviguer vers une nouvelle fenêtre.
Pour y parvenir, Thread.Sleep est souvent utilisé, comme le montre l'extrait de code fourni. Cependant, le blocage du thread d'interface utilisateur avec Thread.Sleep entraîne une interface utilisateur qui ne répond pas pendant que le délai est en cours. Cela se manifeste par un bref affichage du message « délai de deux minutes » avant de passer à la page suivante.
Pour résoudre cette limitation, il est recommandé d'utiliser des techniques asynchrones telles que DispatcherTimer, Task.Delay ou async/await.
Méthode 1 : Utilisation d'un DispatcherTimer
La classe DispatcherTimer fournit un moyen d'exécuter une action 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(); };
Méthode 2 : utilisation de Task.Delay
Task.Delay est une méthode qui renvoie une tâche qui se termine après un délai spécifié.
tbkLabel.Text = "two seconds delay"; Task.Delay(2000).ContinueWith(_ => { var page = new Page2(); page.Show(); });
Méthode 3 : Utilisation d'Async/Await (nécessite .NET 4.5 ou version ultérieure)
La syntaxe Async/await offre un moyen plus élégant et plus lisible de gérer les tâches asynchrones. opérations.
public async void TheEnclosingMethod() { tbkLabel.Text = "two seconds delay"; await Task.Delay(2000); var page = new Page2(); page.Show(); }
En utilisant ces techniques asynchrones, le fil de l'interface utilisateur reste réactif et l'utilisateur voit le message « délai de deux secondes » pendant toute la période de délai avant de passer de manière transparente à la nouvelle page.
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