Будет ли это правильным способом утилизации BackGroundWorker? Я не уверен, нужно ли удалять события перед вызовом .Dispose(). Также вызывает вызов .Dispose() внутри делегата RunWorkerCompleted ok?Правильный способ утилизации BackGroundWorker
public void RunProcessAsync(DateTime dumpDate)
{
BackgroundWorker worker = new BackgroundWorker();
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerAsync(dumpDate);
}
void worker_DoWork(object sender, DoWorkEventArgs e)
{
// Do Work here
}
void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
worker.RunWorkerCompleted -= new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
worker.DoWork -= new DoWorkEventHandler(worker_DoWork);
worker.Dispose();
}
Это работник фона на форме? –
Да, хотя я создал программный продукт BGW программно, а не отбрасывал его в форме в дизайнере. Как показано, BGW создается, когда я хочу запустить поток. Идея заключалась в том, чтобы создавать разные BGW каждый раз, когда поток был вызван и избавлен от них, когда они завершены. – galford13x