2009-03-25 8 views
6

j'utilise le travailleur de fond pour faire une opération coûteuse:réutiliser le BackgroundWorker plus d'une fois

backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork); 
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged); 
backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted); 
backgroundWorker1.RunWorkerAsync(inputs); 

A la fin j'ai ceci:

void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
{ 
    Messagebox.Show("Done with expensive operation 1"}; 
} 

J'ai maintenant une autre opération coûteuse. Puis-je réutiliser ce même arrière-plan? Je veux maintenant de nouveaux callbacks que je ne veux pas les instructions switch sur le ProgressChanged et DoWork Callbacks pour déterminer si je suis en train de faire l'opération 1 ou 2.

Est-il juste plus simple à utiliser 2 classes de travailleurs de fond séparés

Répondre

14

Oui, vous peut réutiliser un BackgroundWorker - mais vous ne pouvez l'utiliser qu'une fois à n'importe quel moment - pas simultanément. Si les opérations sont différentes, cependant, j'utiliserais un travailleur séparé. Sinon, vous devrez décrocher les événements, accrocher les bons événements, etc.

Questions connexes