2009-03-25 14 views
6

ich den Hintergrund Arbeiter bin mit einer teuren Operation zu tun:Wiederverwendung der Background mehr als einmal

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

Am Ende habe ich dies:

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

ich nun eine weitere teure Operation haben. Kann ich denselben Hintergrund-Worker wiederverwenden? Ich möchte jetzt neue Rückrufe wie ich möchte nicht switch-Anweisungen auf der Progress und DoWork Rückrufe, um festzustellen, ob ich Betrieb tue 1 oder 2.

Ist es nur einfacher 2 Arbeiter separate Hintergrund Klassen zu verwenden

Antwort

14

Ja, Sie kann ein BackgroundWorker wiederverwenden - aber Sie können es nur einmal verwenden - nicht gleichzeitig. Wenn die Vorgänge jedoch unterschiedlich sind, würde ich einen separaten Arbeiter verwenden. Andernfalls müssen Sie die Ereignisse aushängen, die richtigen Ereignisse einhängen usw. Unordentlich.

Verwandte Themen