Maison > Article > développement back-end > Comment introduire des retards dans les opérations WPF sans bloquer l’interface utilisateur ?
Introduction de délais dans les opérations WPF
Votre objectif de mise en œuvre d'un délai avant de naviguer vers une fenêtre suivante peut être atteint grâce à plusieurs approches dans WPF.
Aperçu du problème :
L'utilisation de Thread.Sleep pour suspendre le fil de discussion avant de naviguer entraîne un blocage de l'interface utilisateur, provoquant l'affichage bref de l'élément d'interface utilisateur avant que la navigation ne se produise.
Solution :
Pour éviter le blocage des threads, vous devez utiliser des techniques d'attente asynchrones telles que les minuteries du répartiteur ou Task.Delay.
Méthode 1 : DispatcherTimer
Créez un minuteur avec un intervalle de 2 secondes et ajoutez un gestionnaire d'événements Tick qui arrêtera le minuteur et affichera la deuxième page lorsque l'intervalle sera écoulé :
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 : Task.Delay
Utilisez Task.Delay pour suspendre l'opération asynchrone pendant 2 secondes puis afficher la page suivante :
tbkLabel.Text = "two seconds delay"; Task.Delay(2000).ContinueWith(_ => { var page = new Page2(); page.Show(); });
Méthode 3 : Async/Await (pour .NET 4.5 et versions ultérieures)
Utilisez async/await pour obtenir une attente asynchrone au sein de la méthode et éviter le blocage des threads :
public async void TheEnclosingMethod() { tbkLabel.Text = "two seconds delay"; await Task.Delay(2000); var page = new Page2(); page.Show(); }
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!