¿Esta sería 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 .Dispose() dentro del delegado RunWorkerCompleted para hacer?Forma correcta de deshacerse de un 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();
}
¿es este un trabajador de fondo en un formulario? –
Sí, así es, aunque creé el BGW programáticamente en lugar de colocarlo en el Formulario en el diseñador. Como se muestra, el BGW se crea cuando quiero ejecutar el hilo. La idea era crear un BGW diferente cada vez que se llamaba el hilo y deshacerse de ellos cuando se completaran. – galford13x