Benutzer mit den meisten Antworten
Label aktualisieren

Frage
-
Hallo zusammen,
ich schreibe gerade an einer Anwendung und möchte während der Laufzeit ein Label aktualisieren.
Hier mal mein Beispiel-Code:
Private Sub sbSync_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles sbSync.Click If cnnTablet.State = System.Data.ConnectionState.Open And cnnServer.State = System.Data.ConnectionState.Open Then lblBox.Content = "Synchronisation wird gestartet." Thread.Sleep(3000) 'Call SyncWunden() lblBox.Content = "Synchronisation abgeschlossen!" Else lblBox.Content = "Synchronisation fehlgeschlagen!" End If End Sub
Mein Problem. Mir wird nur der Text "Synchronisation abgeschlossen!" angezeigt. Die Sleep-Funktion spricht er auch an. daher dauert es 3 Sekunden bis mir der Text angezeigt wird. aber warum zeigt er mir den ersten Text nicht an?
Mfg
Robbo
Antworten
-
Hallo Robbo,
das ist das gleiche Problem wie in Deiner vorherigen Frage:
Du legst den GUI Thread schlafen und so wird das Label nicht aktualisiert - während eines Nickerchens wird nun mal nicht gearbeitet ;)
Thread.Sleep sollte man allgemein vermeiden; auch fürs Testen, ist es i. a. eine schlechte Wahl.
Um die Anzeige während einer längerdauernde Aktion im GUI Thread zu aktualisieren, brauchst Du etwas wie DoEvents - für WPF siehe http://stackoverflow.com/questions/4502037/where-is-the-application-doevents-in-wpf
Wobei es i. a. besser ist, die andauernde Arbeit in einen Hintergrund-Thread mittels BackgroundWorker oder die Task-Parallel-Libary (TPL) zu verlagern. Dann wird der GUI Thread nicht belegt und kann sich seiner Hauptaufgabe widmen, der Anzeige der Oberfläche.
Gruß Elmar
- Als Antwort markiert Robbo1984 Freitag, 16. Mai 2014 09:34
Alle Antworten
-
Hallo Robbo,
das ist das gleiche Problem wie in Deiner vorherigen Frage:
Du legst den GUI Thread schlafen und so wird das Label nicht aktualisiert - während eines Nickerchens wird nun mal nicht gearbeitet ;)
Thread.Sleep sollte man allgemein vermeiden; auch fürs Testen, ist es i. a. eine schlechte Wahl.
Um die Anzeige während einer längerdauernde Aktion im GUI Thread zu aktualisieren, brauchst Du etwas wie DoEvents - für WPF siehe http://stackoverflow.com/questions/4502037/where-is-the-application-doevents-in-wpf
Wobei es i. a. besser ist, die andauernde Arbeit in einen Hintergrund-Thread mittels BackgroundWorker oder die Task-Parallel-Libary (TPL) zu verlagern. Dann wird der GUI Thread nicht belegt und kann sich seiner Hauptaufgabe widmen, der Anzeige der Oberfläche.
Gruß Elmar
- Als Antwort markiert Robbo1984 Freitag, 16. Mai 2014 09:34