我创建了一个 COM 对象,用于某些应用程序的自动化任务。发生这种情况时,应用程序将启动并显示其主窗口。
当用户关闭主应用程序窗口时会出现问题。对 COM 对象的 Next Invoke 调用不起作用。问题是它不会失败,也不会报告错误。如果我在下一行代码中放置调试器断点,则永远无法到达。如果我用 try/catch 包围 Invoke 调用,则不会捕获到异常。在发布版本中它只是崩溃。
这应该如何工作?由于我使用 CComDispatchDriver 作为 IDispatch* 的包装器,因此我希望即使用户关闭应用程序,我的 AddRef 也会使 COM 对象保持活动状态。我希望至少得到一些 HRESULT 作为错误。