1592 Stimmen

Wie aktualisiere ich die GUI von einem anderen Thread aus?

Welches ist der einfachste Weg, eine Label von einem anderen Thread ?

  • Tengo un Form weiterlaufend thread1 und davon ausgehend eröffne ich ein weiteres Thema ( thread2 ).

  • Während thread2 einige Dateien verarbeitet, würde ich gerne eine Label sur le Form mit dem aktuellen Status von thread2 Arbeit.

Wie könnte ich das tun?

28 Stimmen

Hat .net 2.0+ nicht die BackgroundWorker-Klasse genau für diesen Zweck. Es UI Thread bewusst. 1. Erstellen Sie einen BackgroundWorker 2. Fügen Sie zwei Delegierte hinzu (einen für die Verarbeitung und einen für den Abschluss)

15 Stimmen

4 Stimmen

Siehe die Antwort für .NET 4.5 und C# 5.0: stackoverflow.com/a/18033198/2042090

0voto

Sukhdevsinh Zala Punkte 1089

Um dies in WPF zu erreichen, mache ich es auf folgende Weise.

 new Thread(() => 
 {
     while (...)
     {
         SomeLabel.Dispatcher.BeginInvoke((Action)(() => SomeLabel.Text = ...));
     }
 }).Start();

5 Stimmen

Die Frage bezieht sich übrigens auf [winforms].

0voto

Lankan Punkte 153

Am einfachsten ist es, wenn Sie wie folgt vorgehen:

 Application.Current.Dispatcher.Invoke(new Action(() =>
             {
                    try
                    {
                        ///
                    }
                    catch (Exception)
                    {
                      //
                    }

                    }
     ));

1 Stimmen

Außer, dass die Frage für WinForms ist.

0 Stimmen

Ich weiß nicht, warum dies war downvoted!? es helfen mir mit meinem Problem in einer WPF-Anwendung. Nicht alle Leser dieses Beitrags haben genau das gleiche Problem wie OP, manchmal ein Teil der Lösung kann der Leser in kürzerer Zeit, dann eine vollständige Lösung für ein einzigartiges Problem helfen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X