我继承了一个
BackgroundWorker
并覆盖了 OnDoWork 方法:protected override void OnDoWork(DoWorkEventArgs e)
{
WorkerEndedEvent.Reset();
base.OnDoWork(e);
}
我的问题是,这将从哪个线程调用?是否保证在我的调用RunWorkerAsync()
期间调用它,或者它可能在此后调用(即从工作线程调用)?
RunWorkerAsync
的线程上执行,但是ProgressChanged
和RunWorkerCompleted
会被编组回调用线程。 - Daniel HilgarthOnDoWork
不同于DoWork
,并且不一定是DoWork
调用/线程的一部分。 - noelicusbase.OnDoWork
可能 实际上是启动后台线程的地方。然而,使用ILSpy来窥视源代码显示这并不是事实。RunWorkerAsync
是启动后台线程的方法。该线程随后调用OnDoWork
。 - Daniel Hilgarth