2010-05-28 8 views
1

Supposons que j'ai un backgroundWorker1_DoWork qui trouve une valeur dans une base de données et la renvoie dans e.Result. Disons que j'ai aussi un backgroundWorker1_RunWorkerCompleted qui lit le résultat. Ce que je veux pouvoir faire est basé sur e.Result, je peux relancer backgroundWorker1_DoWork, et ceci je ne sais pas comment faire.Réexécution de DoWork sur un travailleur en arrière-plan en fonction du résultat?

J'apprécierais vraiment toute aide. Vous ne pouvez pas redémarrer votre BackgroundWorker après avoir testé e.Result dans votre événement backgroundWorker1_RunWorkerCompleted?

Répondre

3

+0

Je commence En utilisant backgroundWorker1.RunWorkerAsnc(); dans l'initiation Form1(). Si je veux le redémarrer comme vous l'avez posté, quel code dois-je utiliser et que je mets juste dans mon backgroundWorker1_RunWorkerCompleted? – sooprise

+0

@Soo - utilisez backgroundWorker1.RunWorkerAsync(); comme le suggère Darin. Je suppose que c'est ainsi que vous avez commencé le travailleur de fond en premier lieu? –

+0

Fonctionne bien! Maintenant une petite question rapide, dois-je mettre le premier RunWorkerAsync dans Form1() ou Form1_Load()? – sooprise

4

De la même façon que vous le faites pour la première fois - en invoquant la méthode RunWorkerAsync:

backgroundWorker1.RunWorkerAsync(); 

Assurez-vous que l'invocation est conditionnée ou cette boucle peut fonctionner pour toujours :-)