我有一个编译为 VB6 exe 的 VB6 项目。
它有一个简单的形式作为它的启动对象。
它通过 regasm 的 .NET dll 启动一个 .NET 模态表单,将回调 COM 接口 (IHandler) 的实现传递给它。
.NET 回调 VB6 中的 IHandler 实现。
VB6 尝试使用 vbModal 显示一种新形式。VB6 表单被阻止交互,因为模态 .NET 表单仍然可见。
有没有办法解决这个问题或建议的方法?
我尝试在新的(STA)(托管)线程上回调 VB6,但是当它尝试执行 MyCallbackForm.Show vbModal 时,我得到“无效的过程调用或参数。”......我认为这与事实有关我正在回电一个新线程...
更新:如果我将我的 VB6 项目类型设置为 ActiveX exe,我能够成功地在新线程上进行回调并以模态方式显示我的 VB6 表单......但是一旦我这样做了,我似乎失去了回调上的线程 - 制作从 VB6 到 .NET 的后续调用导致了跨线程异常。我猜这与使用 ActiveX exe 时的线程模型有关......