2009-03-25 25 views
6

używam tle Pracownik zrobić kosztowną operację:ponowne BackgroundWorker więcej niż raz

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

Na koniec mam to:

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

teraz mam inną kosztowną operację. Czy mogę ponownie użyć tego samego pracownika działającego w tle. Chcę teraz nowe wywołania zwrotne jak nie chcę oświadczenia Włączyć ProgressChanged i DoWork callbacków celu ustalenia, czy robię operacja 1 lub 2.

Czy to tylko prostsze w użyciu 2 oddzielne zajęcia tle Pracownik

Odpowiedz

14

Tak, może ponownie użyć BackgroundWorker - ale można go używać tylko raz w dowolnym czasie - nie jednocześnie. Jeśli jednak operacje są inne, użyłbym osobnego pracownika. W przeciwnym razie musisz odłączyć wydarzenia, podłączyć odpowiednie zdarzenia, itp. Messy.

Powiązane problemy