我对BackgroundWorker
有疑问。我可以调用ProgressChanged
事件,而无需使用RunWorkerAsync
启动帖子。
我不明白为什么会这样。如果新线程还没有启动,它如何通知原始线程?
这似乎无论如何都行不通,因为它在没有问题的情况下更新了GUI,在我实现BackgroundWorker
之前就不是这样了。
答案 0 :(得分:7)
调用ReportProgressChanged()
将始终引发ProgressChanged
事件,无论从哪个线程调用它。
在ReportProgressChanged()
的实现中,如果没有从UI线程调用它,则会在UI线程上引发事件。如果从UI线程调用ReportProgressChanged()
,那么它只需引发事件而无需进行额外的编组操作。