Entwurfsmuster GUI mit 2 Threads

Gast #2963245
Lesenswert?

Hallo,

wie macht man sowas am besten:

ich habe mehrere Backgroundworker, die verschiedene Aufgaben haben.
Sind die Aufgaben erledigt, terminieren die Backgroundworker von 
alleine.

Wenn der Backgroundworker beendet wurde, möchte ich ihn wieder neu 
aufrufen mit anderen Parametern. Manchmal will ich auch erst noch einen 
anderen BGW aufrufen und weitermachen wenn der fertig hat.

Also quasi eine Liste an Aufgaben abarbeiten.
Ich mache ungerne ein:

while(backgroundworker1.isbusy)
{
//do nothing
application.doevents();
}

um auf die Abarbeitungen der Backgroundworker zu warten.
Gibts da nicht ein besseres Entwurfsmuster? Eines bei dem die GUI 
lebendig bleibt ohne application.doevents()?

Viele Grüße!
#2963266
Lesenswert?

Messknecht schrieb:
> um auf die Abarbeitungen der Backgroundworker zu warten.
> Gibts da nicht ein besseres Entwurfsmuster? Eines bei dem die GUI
> lebendig bleibt ohne application.doevents()?
>
> Viele Grüße!

RunWorkerCompleted wird autom. ausgelöst... oder man könnte mit 
ProgressChanged entsprechendes "mitteilen"

http://msdn.microsoft.com/de-de/library/system.componentmodel.backgroundworker.runworkercompleted.aspx

http://msdn.microsoft.com/de-de/library/system.componentmodel.backgroundworker_events.aspx
#2964690
Lesenswert?

Messknecht schrieb:
> Gibts da nicht ein besseres Entwurfsmuster? Eines bei dem die GUI
> lebendig bleibt ohne application.doevents()?

Ja, gibt es, z.B. den Thread Pool:
http://msdn.microsoft.com/de-de/library/y5htx827(v=vs.100).aspx

Die elegantere Lösung wäre das Tasken von Aufgaben:
http://msdn.microsoft.com/de-de/library/dd235678(v=vs.100).aspx

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren