Questo sarebbe un modo corretto di disporre di un BackGroundWorker? Non sono sicuro che sia necessario rimuovere gli eventi prima di chiamare .Dispose(). Chiama anche .Dispose() all'interno del delegato RunWorkerCompleted, ok?Modo corretto per smaltire 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();
}
è un lavoratore in background su un modulo? –
Sì, lo è, anche se ho creato il BGW a livello di codice anziché rilasciandolo nel modulo nel designer. Come mostrato, il BGW viene creato quando voglio eseguire il thread. L'idea era di creare un BGW diverso ogni volta che veniva chiamato il thread e smaltirli quando sono stati completati. – galford13x