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.
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 les opérations WPF sans compromettre la réactivité de l'interface utilisateur.
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