So verzögern Sie einen Vorgang asynchron in WPF
Beim Versuch, eine Verzögerung in einem Vorgang zu erzeugen, kann die Verwendung von Thread.Sleep dazu führen UI-Thread wird blockiert. Um dies zu überwinden, sollten asynchrone Mittel eingesetzt werden.
Ein Ansatz ist die Verwendung eines 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>
Eine andere Option ist die Verwendung von Task.Delay:
<code class="csharp">tbkLabel.Text = "two seconds delay"; Task.Delay(2000).ContinueWith(_ => { var page = new Page2(); page.Show(); });</code>
Für .NET 4.5 und höher kann async/await verwendet werden:
<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>
Durch die Implementierung asynchroner Methoden bleibt der UI-Thread während der Verzögerungszeit reaktionsfähig, was nahtlose Übergänge zwischen Fenstern ermöglicht.
Das obige ist der detaillierte Inhalt vonWie verzögere ich einen Vorgang asynchron in WPF, ohne den UI-Thread zu blockieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!