为什么BackgroundWorker的ProgressChanged事件在不调用RunWorkerAsync的情况下工作?

dyl*_*ert 2 c# backgroundworker winforms

我对此有疑问BackgroundWorker.我可以在ProgressChanged没有启动线程的情况下调用该事件RunWorkerAsync.

我不明白为什么会这样.如果新线程还没有启动,它如何通知原始线程?

这似乎无论如何都有效,因为它更新GUI没有问题,在我实现之前不是这样的BackgroundWorker.

Mat*_*son 7

无论调用哪个线程,调用ReportProgressChanged()都将始终引发ProgressChanged事件.

在inplementation中ReportProgressChanged()是一种机制,如果没有从UI线程调用它,则会在UI线程上引发事件.如果ReportProgressChanged() 正在从UI线程调用,那么它只是引发事件,而无需做额外的编组.