повторное использование фонового работника более одного раза - PullRequest
6 голосов
/ 25 марта 2009

Я использую фонового работника для выполнения дорогостоящей операции:

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

В конце у меня есть это:

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

У меня теперь другая дорогая операция. Могу ли я использовать этот же фоновый работник. Теперь мне нужны новые обратные вызовы, так как я не хочу, чтобы операторы switch в ProgressChanged и DoWork Callbacks определяли, выполняю ли я операцию 1 или 2.

Разве проще использовать 2 отдельных фоновых рабочих класса

1 Ответ

14 голосов
/ 25 марта 2009

Да, вы можете повторно использовать BackgroundWorker - но вы можете использовать его только один раз в любое время, а не одновременно. Однако, если операции отличаются, я бы использовал отдельного работника. В противном случае вам придется отцепить события, перехватить правильные события и т. Д. Грязный.

...