„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann man Verzögerungen bei WPF-Vorgängen einführen, ohne den UI-Thread zu blockieren?

Wie kann man Verzögerungen bei WPF-Vorgängen einführen, ohne den UI-Thread zu blockieren?

Veröffentlicht am 20.11.2024
Durchsuche:364

How to Introduce Delays in WPF Operations Without Blocking the UI Thread?

Verzögerungen bei WPF-Vorgängen mit alternativen Ansätzen erreichen

Wenn Sie versuchen, vor der Ausführung eines Vorgangs in WPF eine Verzögerung einzuführen, ist es wichtig, die Verwendung von Thread.Sleep als solchen zu vermeiden Der Ansatz blockiert den UI-Thread und kann zu nicht reagierenden Benutzeroberflächen führen. Erwägen Sie stattdessen die Nutzung asynchroner Programmiertechniken.

DispatcherTimer-Ansatz

Eine Möglichkeit besteht darin, einen DispatcherTimer zu verwenden. Dieser Timer läuft im UI-Thread und ruft seinen Tick-Ereignishandler nach einem angegebenen Intervall auf:

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();
};

Task.Delay-Ansatz

Ein anderer Ansatz beinhaltet die Verwendung von Task.Delay:

tbkLabel.Text = "two seconds delay";

Task.Delay(2000).ContinueWith(_ => {
    var page = new Page2();
    page.Show();
});

Hier erstellt das Programm eine Aufgabe, die nach einer Verzögerung von 2 Sekunden abgeschlossen wird, und ruft dann den Fortsetzungsdelegaten auf, um die neue Seite anzuzeigen.

Async/Await-Ansatz (für .NET 4.5 und höher)

Schließlich bietet das Async/Await-Muster für Projekte, die auf .NET 4.5 oder höher abzielen, eine prägnante und praktische Möglichkeit um Verzögerungen zu behandeln:

public async void TheEnclosingMethod()
{
    tbkLabel.Text = "two seconds delay";

    await Task.Delay(2000);
    var page = new Page2();
    page.Show();
}

Durch die Nutzung asynchroner Techniken können Entwickler Verzögerungen in WPF-Vorgänge einführen, ohne die Reaktionsfähigkeit der Benutzeroberfläche zu beeinträchtigen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3