gelöst Visual Basic - Select Case - Update Status Bar

Mitglied: Pat.bat

Pat.bat (Level 1) - Jetzt verbinden

02.08.2019 um 13:32 Uhr, 674 Aufrufe, 8 Kommentare, 1 Danke

Hallo zusammen,

ich habe folgende Methode:

Dort möchte ich in jedem Case am Anfang und Ende die Status Bar dementsprechend Updated.
Jedoch scheint er den ersten Befehl nicht auszuführen. Die Statusbar bleibt unverändert, sobald ich auf den Button klicke.
Erst nachdem der Shell Befehl durchlaufen ist, Updated er die Status Bar mit dem "Abgeschlossen".

Ich frage mich also jetzt warum er das so macht, er müsste doch theoretisch den UpdateStatusBar Befehl erst ausführen, bevor er in den Shell Befehler samt "wait = true" geht?
Oder habe ich da vergessen was zu beachten?

Vielen Dank im Voraus
Mitglied: emeriks
LÖSUNG 02.08.2019 um 13:55 Uhr
Hi,
pack mal in die Sub UpdateStatusBar ein "Application.DoEvents" nach der Änderung rein.

E.
Bitte warten ..
Mitglied: Pat.bat
02.08.2019, aktualisiert um 14:27 Uhr
Hat Funktioniert, danke.

Frage nebenbei, warum musste in diesem Fall das Application.DoEvents dazu?

hier nochmal die Sub:

Bitte warten ..
Mitglied: Kraemer
02.08.2019 um 14:42 Uhr
Zitat von Pat.bat:

Frage nebenbei, warum musste in diesem Fall das Application.DoEvents dazu?
damit neu gezeichnet wird... https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.applica ...
Bitte warten ..
Mitglied: emeriks
02.08.2019, aktualisiert um 15:45 Uhr
Zitat von Pat.bat:
Frage nebenbei, warum musste in diesem Fall das Application.DoEvents dazu?
Weil Du im Shell-Kommando angegeben hast, dass er auf die Beendigung des Befehls warten soll. Weil Du das aber in einem Control-Eventhandler des Formulars machst, bremst/blockierst Du damit die Abarbeitung andere Control-Events in diesem Formular, z.B. das Neuzeichnen des Text des Statuslabels bei Änderung des Texts. Mit dem DoEvents weist Du die Anwendung explizit an, anderen Events kurz Aufmerksamkeit zu schenken und diese ggf. abzuarbeiten.
Aber Vorsicht: Das DoEvents sollte man nicht zu exzessiv nutzen, weil es sonst u.U. das Programm ausbremst.
Bitte warten ..
Mitglied: 140447
02.08.2019, aktualisiert um 17:44 Uhr
Jepp und deswegen verlagert man solche Aktionen wie länger andauernde Prozesse normalerweise in separate Threads aus und lässt sich über den Status mit üblicherweise über Eventhandler informieren.
Bitte warten ..
Mitglied: Pat.bat
23.08.2019, aktualisiert um 08:46 Uhr
@emeriks
@140447

Moin zusammen,

ich muss hier nochmal nachfragen: Wie genau lagere ich Prozesse in seperate Threads aus? Ich habe versucht das ganze zu googlen, aber ohne Erfolgt. Wahrscheinlich suche ich aber auch nur falsch.

Mir kommt das in letzter Zeit öfters vor, das ich Prozesse habe, die etwas länger brauchen und in der Zeit kann man weder das Fenster verschieben noch irgendwelche Buttons wie zb. Abbrechen drücken. Daher denke ich, das diese es helfen würde solche Prozesse auszulagern.

Allerdings habe ich damit bis jetzt noch keine Erfahrung.

Kennt ihr zufällig ein passendes Tutorial oder Website zu dem Thema?


Vielen Dank im Voraus
Bitte warten ..
Mitglied: Kraemer
23.08.2019 um 09:25 Uhr
Ich bin mir nicht sicher, ob du die Funktionsweise von Threads verstanden hast, aber hier mal ein simples Beispiel:

https://youtu.be/KK5D4Y2fnl4
Bitte warten ..
Mitglied: emeriks
23.08.2019, aktualisiert um 17:06 Uhr
Zitat von Pat.bat:
ich muss hier nochmal nachfragen: Wie genau lagere ich Prozesse in seperate Threads aus?
Gar nicht. Prozesse sind Prozesse und Threads sind Threads. Ein Prozess kann in mehreren Threads laufen. Jeder Prozess läuft in seinen/m eigenen Thread/s.

Mir kommt das in letzter Zeit öfters vor, das ich Prozesse habe, die etwas länger brauchen und in der Zeit kann man weder das Fenster verschieben noch irgendwelche Buttons wie zb. Abbrechen drücken. Daher denke ich, das diese es helfen würde solche Prozesse auszulagern.
Nennen wir es: Aktivitäten in mehreren Threads parallel ausführen. Suchbegiffe wären "multithreading" oder u.u. auch "parallel processing"

Allerdings habe ich damit bis jetzt noch keine Erfahrung.
Dann fange klein an.
Suche nach und probiere mit:
  • System.Threading.Thread
  • System.Threading.Tasks
  • System.ComponentModel.BackgroundWorker
  • Control.BeginInvoke

Wenn Du viel mit Formularen arbeitest, dann solltest Du Dir mal den BackgroundWorker ansehen. Auch BeginInvoke kann da helfen.

Task dann auch im Zusammenhang mit Asnyc Sub und Await.
Bitte warten ..
Heiß diskutierte Inhalte
Router & Routing
VPN Performance durch Mikrotik erhöhen
JseidiFrageRouter & Routing29 Kommentare

Hallo zusammen, ich habe Stand heute zwei Standort die ich per Site-to-Site VPN über zwei Fritzboxen verbinde. Da hier ...

Server-Hardware
Grobes Konzept Hyper-V Storage - Storage für Hyper-V
nachgefragtFrageServer-Hardware19 Kommentare

Hallo Administratoren. Um VHDX-Daten zentral zu halten freue ich mich auf Euren konstruktiven Input. Bisher liegen die VHDX-Daten jeweils ...

Voice over IP
Brother-Fax an Speedport Hybrid funktioniert nicht
gelöst kman123FrageVoice over IP16 Kommentare

Hallo liebes Forum, ich bin neu hier und hätte eine kleine Frage, da ich einfach nicht weiter komme. Sorry ...

Ubuntu
Ubuntu 20.10 "Groovy Gorilla" mit GNOME 3.38 und Kernel 5.8 veröffentlicht
FrankInformationUbuntu13 Kommentare

Canonical hat Ubuntu 20.10 veröffentlicht. Die neue Version mit dem Codenamen "Groovy Gorilla" bekommt lediglich 9 Monaten Sicherheitsupdates, kritischen ...

Windows Userverwaltung
Synology mit Azure Active Directory verbinden
roeggiFrageWindows Userverwaltung13 Kommentare

Ich suche eine Lösung mit der ich ein Synology NAS mit der Active Directory verbinden kann um die Benutzer ...

Windows 10
RFID oder ähnlich Methode zur Sperrung W10pro bei Abwesenheit - Anmeldung nur über PW wieder ermöglichen
UweGriFrageWindows 1013 Kommentare

Hallo Admins, folgende Lösung wird gesucht: W10pro Anmeldung über Bitlocker Freischaltung und PW bei Anmeldung. Gesucht wird: RFID Chip ...

Ähnliche Inhalte
Visual Studio
Visual Basic für anfänger
gelöst Daoudi1973FrageVisual Studio12 Kommentare

ich möchte Visual Basic lernen, kann jemand mir Tipps geben. PS: ich habe nur im 1999 mit Fortran 90 ...

Visual Studio

Remotedienst prüfen mit Visual Basic

gelöst flyingmichaelFrageVisual Studio1 Kommentar

Hallo Zusammen, ich möchte mir gerade ein Programm bauen, mit dem ich diverse Server auf Verfügbarkeit prüfen kann. Das ...

VB for Applications

Visual Basic persönliche MSTSC Verbindung

gelöst 127941FrageVB for Applications3 Kommentare

Hallo, vielleicht kann mir hier irgendjemand weiterhelfen. Ich bin gerade dabei ein kleines VB Programm zu entwickeln komme hier ...

Visual Studio

Visual Basic - Durch My.Settings loopen

gelöst Pat.batFrageVisual Studio3 Kommentare

Hallo, ich wollte mit folgender Funktion durch my.settings gehen und prüfen ob eine Variable leer ist. Dazu hatte ich ...

Visual Studio

Microsofrt Visual Basic Studio Fehler Meldung

Guli.DenizFrageVisual Studio3 Kommentare

Hey ich will was in Visual Basic Programmieren und da kommt eine komische Fehlermeldung wenn ich das Programm Starten ...

Visual Studio

Visual Basic Flatfile zum Speichern von Daten?

gelöst zRobinFrageVisual Studio4 Kommentare

Hey! Ich habe schon einmal eine frage gestellt, indem Ich mein Spiel "Cake Clicker" erwähnt habe, jetzt brauche ich ...

Berechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid CloudSmall Business ITSmall Business IT