我第一次使用BackgroundWorker,使用并不完全清楚。我可以直接从DoWork处理程序发送事件,还是必须调用ReportEvents并从ProgressChanged处理程序发送事件?
答案 0 :(得分:1)
虽然技术上可以在DoWork
内提升事件并使用UI,但您必须像在任何其他线程中一样(使用Invoke()
或{{1}用于UI交互,或适用于其他跨线程操作的线程同步),这会破坏BeginInvoke()
的目的。
更好的选择是调用BackgroundWorker
,然后以线程安全的方式引发ReportProgress()
事件。您传递一个代表完成百分比的ProgressChanged
(尽管由您来实际执行某些操作),以及您可能需要获取有关事件或进度的特定信息的任何int
。在ProgressChanged中,您可以与UI交互,引发事件等。
答案 1 :(得分:-1)
只需将其添加到代码中即可。
void new control.CheckForIllegelCrossPathThreads == false;