我有一个用 C#.Net 编写的应用程序(如果重要,框架 2.0)。它调用一个 VB6 exe,该 exe 使用一种方法公开一个 COM 类 - 显示一个表单。
当 VB 窗体关闭时,我收到系统错误(Windows 消息):无法读取内存位置。然后,Windows 询问我是关闭应用程序还是调试它。我选择什么并不重要,因为测试机器上没有安装调试器,当我选择调试时,它会给我一条消息,它必须关闭。
该错误仅在两种情况下发生(两者都必须适用):
- 当它在 Windows 2000 下运行时。
- 此外,只有当我首先单击“显示报告”按钮时才会发生这种情况,该按钮调用另一个 COM DLL - Crystal 报告 - 来生成报告。
基本上,流程是这样的:
C#.Net 应用程序 |-- MDI表格 | 单击窗体上的按钮时,调用 VB6 方法 +-- 显示表格。调用 setParent(VBForm.Handle, DotNetForm.Handle) | 并显示表格。被调用的方法返回(没有返回值) | | | +-- 点击“显示报表”时,使用水晶报表生成报表并展示给用户 | | | \-- 单击退出按钮时,表单关闭 -这是发生错误的地方 | \-- .Net 形式在内部形式关闭后仍然存在很长时间
有谁知道什么可能导致这样的错误?VBOn Error Goto
在整个 Main 方法周围有一条线,它应该捕获 VB 中的任何错误 - 但它没有。但是,错误确实来自 VB 生成的 EXE 文件。