这是处理BackGroundWorker的正确方法吗?我不确定在调用.Dispose()之前是否需要删除事件。另外调用RunWorkerCompleted委托内的.Dispose()可以吗?处理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();
}
这是一个窗体上的后台工作? – 2010-03-30 01:38:05
是的,尽管我以编程方式创建了BGW,而不是将它放在设计器的窗体中。如图所示,当我想运行线程时,BGW被创建。这个想法是每次调用线程时创建一个不同的BGW,并在完成时处理它们。 – galford13x 2010-03-30 21:31:36