根据另一个问题的答案,如果创建它的线程很忙,则无法更新 VB 用户界面:因此为什么大型计算作业通常必须进入后台任务。
这就是神秘的东西。我有以下代码。它在进程内 COM 上调用,像这样
- 客户来电
showform()
- 客户端做了大量的工作,在这个过程中冻结了自己的 UI
- 客户端完成工作,返回更新自己的 UI
在第 2 步,VB 表单在那里但被冻结 - 您无法与之交互。在第 3 步,VB 表单变得可用。但这是为什么呢?执行线程肯定已经返回给客户端了吗?如果客户端以某种方式处理表单的事件,它通过什么魔法知道要处理哪些事件以及将它们发送到哪里?
<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
Public Class ComClass1
Public Sub New()
MyBase.New()
End Sub
Private f1 As Form1
Public Sub showform()
f1 = New Form1()
f1.Show()
End Sub
End Class