VB.NET WinForms - 如何从BackgroundWorker的线程访问主线程的对象?

时间:2011-08-04 06:51:53

标签: vb.net winforms multithreading backgroundworker

我正在使用BackgroundWorker,我希望BackgroundWorker执行数据库中数据的检索过程,而用户仍然可以在表单上执行其他任务。问题是,在检索数据后,我似乎无法从Form的{​​{1}}事件中访问DoWork中的ListView,我将使用数据I填充该ListView我找回了。我该怎么办?我错过了什么吗?

考虑这个例子,我就是这样做的:

BackgroundWorker

2 个答案:

答案 0 :(得分:2)

BackgroundWorker的文档非常明确:

  

您必须小心不要操纵DoWork事件处理程序中的任何用户界面对象。而是通过ProgressChangedRunWorkerCompleted事件与用户界面进行通信。


示例"How to: Download a File in the Background"显示了一个示例方法,即可以在主线程和后台工作程序之间共享对象 - 通过安排将这些对象存储在类级别的变量中。

答案 1 :(得分:0)

DoWorkEventArgs包含一个Argument属性,您可以在其中存储任何对象,例如包含操作UI的说明的用户定义的类。