Video-Tutorial: Multithreading mit VB.NET und BackgroundWorker
Das Visual Studio stellt dem Softwareentwickler eine Menge Klassen zur Verfügung, die dem VB.NET-, C#- ,… -Programmierer das Leben enorm erleichtern kann.
Ein gutes Beispiel hierfür ist die BackgroundWorker-Klasse, mit der man Hintergrund-Prozesse (also Threads) steuern kann.
Und wofür brauche ich das Ganze?
Da Programmcode seriel abgearbeitet wird, wird beim Ausführen einer längeren Operation natürlich auch der Zugriff auf die Oberfläche solange blockiert, bis der Vorgang beendet ist.
Um diesem aus dem Weg zu gehen, sollte man diese Operation in einen anderen Thread auslagern, der parallel zum Oberflächen-Thread ausgeführt wird.
Gerade in der Zeit der Multiprozessor-Systemen ist dieses vorteilhaft, da so das Betriebssystem den UI-Thread und den Arbeits-Thread auf verschiedene CPUs verteilen kann.
Im folgenden VB.NET- Tutorial zeige ich Euch, wie man mit der BackgroundWorker -Klasse schnell einen neuen Thread erstellt, diesen startet und den Fortschritt des Threads visualisiert.
Außerdem werde ich Euch zeigen, wie dieser Hintergrundprozess auch leicht abzubrechen geht.
Hat Euch das Tutorial gefallen? Über konstruktive Kritik freue ich mich natürlich immer!
Feines Tutorial, das hat mir gut gefallen. Nur der letzte Satz klingt irgendwie abgehackt, aber sonst supi 😀
Da hast Du recht, Michi. YouTube hat meinen letzten Satz abgeschnitten. Deswegen hört das Tutorial so plötzlich auf. Aber ich denke, es geht auch so
Hallo!
Fein fein dieses tut! – Ich habe dazu ein kleines problem:
Wenn ich in dem Thread ein neues Form_X erzeuge bleibt mir dieses nach beendigung des threads hängen (bzw. die ganze Applikation) …ja eigenltich verständlich aber wie kann man das lösen das dieses Form auch nach beendigung des threads wieterläuft… kannstdu mitr da evenutell behilflich sein? – gibt es dazu eine Lösung?
Vielen Dank!
Das Problem ist, dass Du beim Erzeugen eines Forms ja eine Thread-übergreifende Aktion machst. Du müsstest diese Aktion außerhalb dieses Threads machen. Ich kenne jetzt nicht deine Applikation, aber geht es vielleicht, dass Du eine globale Forminstanz außerhalb des Threads erzeugst(diese aber noch nicht anzeigst) und diese durch ein Flag dann im ProgressChanged erst anzeigst? Da Du dem ProgressChanged Ereigniss neben einer Prozentzahl auch ein Objekt übergeben kannst, kannst Du auch ein Flag übergeben. Ist das eine sinnvolle Lösung für Dich?
Du kannst natürlich auch die Form im ProgressChanged instanzieren, dann brauchst Du keine globale Form. Hilft Dir das?