Wäre das eine gute Möglichkeit, einen BackGroundWorker zu entsorgen? Ich bin mir nicht sicher, ob es notwendig ist, die Ereignisse vor dem Aufruf von .Dispose() zu entfernen. Auch Aufruf von .Dispose() innerhalb des RunWorkerCompleted-Delegat in Ordnung zu tun?Richtiger Weg, einen BackGroundWorker zu entsorgen
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();
}
ist dies ein Hintergrundarbeiter auf einem Formular? –
Ja ist es, obwohl ich die BGW programmgesteuert erstellt habe, anstatt sie auf das Formular im Designer zu legen. Wie gezeigt, wird die BGW erstellt, wenn ich den Thread ausführen möchte. Die Idee war, jedes Mal, wenn der Thread aufgerufen wurde, eine andere BGW zu erstellen und sie nach Abschluss zu entfernen. – galford13x