我创build了一个用于某些应用程序的自动化任务的COM对象。 发生这种情况时,应用程序启动并显示“主窗口”。
用户closures主应用程序窗口时发生问题。 下一个调用COM对象的调用不起作用。 问题是它不会失败,并且不会报告错误。 如果我在下一行代码中放置一个debugging器断点,它永远不会到达。 如果用try / catch包围Invoke调用,则不会发生exception。 在发布版本中,它只是崩溃。
这应该如何工作? 因为我使用CComDispatchDriver作为IDispatch *的包装,所以我希望我的AddRef可以使COM对象保持活动状态,即使用户closures了应用程序。 我希望至less得到一些HRESULT作为一个错误。
可能发生的情况是您的应用程序在退出时称为CoUninitialize。 CoUninitialize会导致所有COM对象被丢弃,因此如果你在调用CoUninitialize之后与COM对象进行交互,你将会崩溃。