无法从类更新主窗体上的ObjectListView

时间:2014-10-03 07:54:12

标签: vb.net winforms class objectlistview

我希望有人可以帮我解决一个问题:

我有一个带有ObjectListView控件的主窗体。当我通过主窗体上的代码向控件添加对象时,一切正常,但是......

我有一个做一些处理的类。这个类启动一个ThreadPool来处理传入的信息,一旦完成,我试图更新存储在主窗体上的ObjectListView。

奇怪的是我绝对没有错误,调试器一直很好,只是没有任何东西通过该类在控件上填充。

我不知道我做错了什么......

所以这没有给我任何东西:

Dim _activityItem As New ActivityItem
frmMain.lsvActivity.AddObject(_activityItem)

然而它在frmMain上运作良好

更新 我已经关闭了ThreadPooling,它仍然没有更新ObjectListView控件。

更新2 只是为了让事情变得更加清晰,我将解释应用程序的工作原理(简要说明):

  • 当我的主表单加载时,我启动一个线程来侦听传入 消息
  • 从主表单
  • 中对ObjectListView进行的任何填充都可以
  • 收到消息后,会将消息传递给MessageHandling类 解码
  • 解码后,会传递给线程池进行处理
  • 完成所有处理后,将通过ObjectListView向用户提供状态,但仍在MessageHandling类中(使用上面解释的代码段)
  • 然后,应用程序会为每个传入重复整个过程 消息或直到退出

由于

1 个答案:

答案 0 :(得分:0)

试试这个。

frmMain.Invoke(Sub() frmMain.lsvActivity.AddObject(_activityItem))

您不应该直接从UI线程以外的任何线程访问UI控件 Control.Invoke在UI线程上执行指定的委托。