3

我创建了一个 COM 对象,用于某些应用程序的自动化任务。发生这种情况时,应用程序将启动并显示其主窗口。

当用户关闭主应用程序窗口时会出现问题。对 COM 对象的 Next Invoke 调用不起作用。问题是它不会失败,也不会报告错误。如果我在下一行代码中放置调试器断点,则永远无法到达。如果我用 try/catch 包围 Invoke 调用,则不会捕获到异常。在发布版本中它只是崩溃。

这应该如何工作?由于我使用 CComDispatchDriver 作为 IDispatch* 的包装器,因此我希望即使用户关闭应用程序,我的 AddRef 也会使 COM 对象保持活动状态。我希望至少得到一些 HRESULT 作为错误。

4

1 回答 1

0

可能发生的情况是您的应用程序在退出时调用了 CoUninitialize。CoUninitialize 会导致所有 COM 对象被丢弃,因此如果您在调用 CoUninitialize 后与 COM 对象进行交互,您将崩溃。

于 2011-10-13T18:43:35.170 回答