WPF-Threading: Steuerelemente aus Hintergrundthreads sicher aktualisieren
Die Single-Thread-Natur von WPF erfordert einen sorgfältigen Umgang mit UI-Updates von Nicht-Haupt-Threads. Die Dispatcher
-Klasse bietet die Lösung.
Nutzung der Dispatcher.Invoke-Methode
Dispatcher.Invoke
ermöglicht die Ausführung eines Delegaten im Haupt-UI-Thread, was für den sicheren Zugriff und die Änderung von WPF-Steuerelementen aus Hintergrundthreads von entscheidender Bedeutung ist.
Implementierungsschritte:
Dispatcher.Invoke
, um einen Delegaten auszuführen, der für UI-Updates verantwortlich ist.Action
- oder Func
-Delegaten als Argument für Dispatcher.Invoke
an.Anschauliches Beispiel:
<code class="language-csharp">// Launch a background thread for data fetching Thread dataThread = new Thread(RetrieveData); dataThread.Start(); // Background thread function private void RetrieveData() { // ... Data retrieval from a web server ... // Update the UI via Dispatcher.Invoke Application.Current.Dispatcher.Invoke(() => { // Update WPF controls with the fetched data }); }</code>
Wichtiger Hinweis:
Führen Sie innerhalb von Dispatcher.Invoke
keine langwierigen Vorgänge aus, um ein Einfrieren der Benutzeroberfläche zu verhindern. Verwenden Sie für zeitaufwändige Aufgaben stattdessen ein BackgroundWorker
.
Das obige ist der detaillierte Inhalt vonWie kann ich WPF-Steuerelemente aus einem Nicht-UI-Thread sicher aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!