我正在使用BackgroundWorker
,我希望BackgroundWorker
执行数据库中数据的检索过程,而用户仍然可以在表单上执行其他任务。问题是,在检索数据后,我似乎无法从Form
的{{1}}事件中访问DoWork
中的ListView,我将使用数据I填充该ListView我找回了。我该怎么办?我错过了什么吗?
考虑这个例子,我就是这样做的:
BackgroundWorker
答案 0 :(得分:2)
BackgroundWorker的文档非常明确:
您必须小心不要操纵DoWork事件处理程序中的任何用户界面对象。而是通过ProgressChanged和RunWorkerCompleted事件与用户界面进行通信。
示例"How to: Download a File in the Background"显示了一个示例方法,即可以在主线程和后台工作程序之间共享对象 - 通过安排将这些对象存储在类级别的变量中。
答案 1 :(得分:0)
DoWorkEventArgs
包含一个Argument
属性,您可以在其中存储任何对象,例如包含操作UI的说明的用户定义的类。