2009-03-25 35 views
6

sto usando il lavoratore sfondo di fare un'operazione costosa:riutilizzare la BackgroundWorker più di una volta

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

Alla fine ho questo:

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

ora ho un'altra operazione costosa. Posso riutilizzare questo stesso background worker. Ora voglio nuove funzioni di callback come io non voglio istruzioni switch sul ProgressChanged e DoWork callback per determinare se sto facendo il funzionamento 1 o 2.

è solo semplice da utilizzare 2 separate classi sfondo lavoratore

risposta

14

Sì, è può riutilizzare uno BackgroundWorker - ma è possibile utilizzarlo solo una volta in qualsiasi momento, non contemporaneamente. Se le operazioni sono diverse, tuttavia, utilizzerei un lavoratore separato. Altrimenti dovrai sganciare gli eventi, agganciare gli eventi corretti, ecc. Disordinato.

Problemi correlati