我创建了一个用于某些应用程序的自动化任务的COM对象。发生这种情况时,应用程序启动并显示其“主窗口”。
当用户关闭主应用程序窗口时,会出现问题。 Next Invoke对COM对象的调用不起作用。问题是它没有失败,也没有报告错误。如果我在下一行代码中放置调试器断点,则永远不会到达。如果我用try / catch包围Invoke调用,则不会捕获异常。在发布版本中它只是崩溃。
这应该如何运作?由于我使用CComDispatchDriver作为IDispatch *的包装器,我希望即使用户关闭了应用程序,我的AddRef也会使COM对象保持活动状态。我希望至少得到一些HRESULT作为错误。
答案 0 :(得分:0)
可能发生的是您的应用程序在退出时调用了CoUninitialize。 CoUninitialize导致所有COM对象被丢弃,因此如果您在调用CoUninitialize后与COM对象进行交互,则会崩溃。