2009-03-25 19 views
6

estoy usando el trabajador de fondo para hacer una operación costosa:reutilizar el BackgroundWorker más de una vez

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

Al final tengo esto:

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

ahora tengo otra operación costosa. ¿Puedo volver a utilizar este mismo trabajador de fondo? ahora quiero nuevas devoluciones de llamada como no quiero sentencias switch en la ProgressChanged y DoWork devoluciones de llamada para determinar si estoy haciendo la operación 1 o 2.

¿Es sólo más fácil de usar 2 clases obreras fondo separadas

Respuesta

14

Sí, puede volver a usar un BackgroundWorker, pero solo puede usarlo una vez en cualquier momento, no al mismo tiempo. Si las operaciones son diferentes, sin embargo, usaría un trabajador por separado. De lo contrario, tendrá que desenganchar los eventos, conectar los eventos correctos, etc. Desordenado.

Cuestiones relacionadas