关闭窗口时“无法调用或调用BeginInvoke ...”

时间:2012-03-26 13:19:37

标签: vb.net multithreading invoke invalidoperationexception

好的,关于这个错误有很多问题,但我似乎找不到解决我的问题的方法。我有一个线程在长时间运行的操作期间从数据库加载一个控件。如果我在该线程完成之前关闭了我的窗口,那么在执行Invoke or BeginInvoke cannot be called on a control until the window handle has been created.时会抛出Invoke

我已将代码修改为如下所示:

If Not Me.IsDisposed And Me.Created And Me.IsHandleCreated Then '
      Me.Invoke(New AddImageDelegate(AddressOf AddImage), item.PartNo, New Bitmap(item.ImagePath))
      Me.Invoke(New SetImageDelegate(AddressOf SetImage), I, item.PartNo)
End If

然而,它仍会命中Invoke行并抛出错误。当调试因例外而停止时,IsDisposed为真,.Created为假,.IsHandleCreated为假。因此,检查这些属性并没有帮助。

那么......在这种情况下,如何防止它运行调用线?

1 个答案:

答案 0 :(得分:1)

可能是在您的表单关闭之前调用了Invoke?

而不是如果我建议不要关闭你的表单,直到你设法停止第二个线程,它更安全。