[VB.NET]BackgroundWorker arbeitet nicht

Hi !

Ich benutze in einem Programm einen BackgroundWorker um eine größere Datenoperation auszuführen und die GUI gleichzeitig ansprechbar zu halten. Öffne Ich mein Projekt in Visual Studio und starte das Programm von dort aus, so funktioniert alles wie gewünscht.

Führe ich aber die Executable direkt aus, anstatt sie über die IDE zu starten, so bleibt das Programm stehen. Und zwar nicht im Sinne von „Es hängt sich auf“, sondern die GUI bleibt ansprechbar, es geschieht nur nix.

Ich hab das Programm im Debug kompiliert, manuell gestartet und dann den Debugger der IDE an den Prozess angehängt um zu schauen, was passiert und habe dabei gesehen, dass der Backgroundworker anscheinend nichts tut.

Mein Programm zeigt das Fenster mit der Progressbar an, erstellt und startet danach den BackgroundWorker mit BGWorker.RunWorkerAsync() und danach geschieht nichts mehr.

Ich habe Debug-Marken in alle behandelten Events des Workers, also DoWork, ProgressChanged und RunWorkerCompleted gesetzt, aber keine davon wird angesprungen. Ich habe testweise ein paar MsgBoxen gesetzt, weil ich mir nicht sicher war, ob der Debugger auch in den Thread des Workers springen kann, aber auch diese wurden nicht angezeigt. Es scheint also, als würde der Code in den Events nicht ausgeführt.

Kann mir jemand einen Tipp geben, was ich jetzt tun soll ?

mfg RW

hi!

ich hab auch kürzlich mit BWs gearbeitet. ich musste fest stellen, dass das programm, wenn es von der IDE ausgeführt wird erheblich langsamer lief als wenn ich es manuell aus dem verzeichnis startete!

vllt reicht es schon wenn du iwo nen kleines delay einfügst :wink:

oder du fügst zu testzwecken ein zusätzliches steuerelement ein mit dem du mit hilfe eines events dann den BW manuell starten kannst

Oh, vielleicht hab ich mich falsch ausgedrückt :smile:

Der BackgroundWorker wird durch einen Button in meinem Programm ausgelöst.

Allerdings führt der BW nur dann Code aus, wenn ich das Programm für die IDE starte. Wenn nach Projekt\Debug\ gehe und da meine .exe aus dem Explorer starte, geht das nicht mehr.

Hat sich erledigt. Der Fehler war, dass ich GUI-Elemente Threadübergreifend aufgerufen habe.

Keine Ahnung, warum die Exception dazu nicht angezeigt wurde, sondern zum Programmstillstand führte.