Manera adecuada de deshacerse de un BackGroundWorker
¿Sería esta una forma adecuada de deshacerse de un BackGroundWorker? No estoy seguro de si es necesario eliminar los eventos antes de llamar a .Dispose (). También está llamando a .Dispose () dentro del delegado RunWorkerCompleted ¿está bien?
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();
}