Comment retarder une opération de manière asynchrone dans WPF
Lorsque vous tentez de créer un retard dans une opération, l'utilisation de Thread.Sleep peut entraîner le Le fil de l'interface utilisateur est bloqué. Pour surmonter cela, des moyens asynchrones doivent être utilisés.
Une approche consiste à utiliser un DispatcherTimer :
<code class="csharp">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(); };</code>
Une autre option consiste à utiliser Task.Delay :
<code class="csharp">tbkLabel.Text = "two seconds delay"; Task.Delay(2000).ContinueWith(_ => { var page = new Page2(); page.Show(); });</code>
Pour .NET 4.5 et versions ultérieures, async/await peut être utilisé :
<code class="csharp">// Add async keyword to the method signature public async void TheEnclosingMethod() { tbkLabel.Text = "two seconds delay"; await Task.Delay(2000); var page = new Page2(); page.Show(); }</code>
En implémentant méthodes asynchrones, le thread de l'interface utilisateur reste réactif pendant la période de retard, permettant des transitions transparentes entre les fenêtres.
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!