BackgroundWorker und ProgressBar

17/11/2009 - 20:04 von Chris Seidel | Report spam
Hallo,

ich habe eine Operation, die etwas lànger dauert. Diese làuft im Thread
des GUIs. Nun wollte ich wàhrend das làuft, einen ProgressBar animiert
anzeigen. Der wird aber nicht aktualisiert, wenn der GUI-Thread blockiert
ist. Bekomme ich das Aktualisieren des PB via BackgroundWorker hin oder
muss ich Operation selbst in den BGW stecken?

Danke
 

Lesen sie die antworten

#1 Frank Dzaebel
17/11/2009 - 20:41 | Warnen spam
Hallo Chris,

ich habe eine Operation, die etwas lànger dauert.
Diese làuft im Thread des GUIs.



ok, also im Haupt-Thread.
Nun das ist (je nach Lànge) nicht immer die beste Idee.
Du wirst sicher gemerkt haben, dass die UI eben auch nicht
response-fàhig für User-Aktionen ist, was gem. Usablility
normal vermieden werden sollte. Manchmal kann man
"Workaround-like" im Haupt-Thread auch mit DoEvents() in
ca. 150 ms Abstand arbeiten.
Aber normal eben die langen Aktionen in einen Nicht-UI-Thread
verlagern und bei Control-Modifikationen ggf. temporàr in
der MainThread zurückmarshallen.


Nun wollte ich wàhrend das làuft, einen ProgressBar animiert
anzeigen. Der wird aber nicht aktualisiert, wenn der GUI-Thread
blockiert ist. Bekomme ich das Aktualisieren des PB via
BackgroundWorker hin oder muss ich Operation selbst
in den BGW stecken?



Hier (u.a.) Möglichkeiten:

[Bearbeiten von Steuerelementen aus Threads]
http://dzaebel.net/ControlInvoke.htm


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen