我将ESRI Map Control嵌入到用MFC / C ++编写的自定义ActiveX控件中。自定义ActiveX控件充当Map Control包装器,因此我可以将其嵌入到仅运行时和非关系的特定环境中。多亏了这个网站,我能够将特征点加载到内存工作区中。但是,托管环境现在在关闭时会卡在内存中,并且只有在我使用InMemoryWorkspaceFactory时才会执行此操作。因此,我的结论是工厂锁定了一个文件或资源,并且通过不释放它,导致主机环境永远不会关闭。
有没有办法在ActiveX控件的WM_DESTROY消息中手动删除所有功能和要素类并完全释放工作空间?似乎没有IWorkspaceFactory的Create方法的对应物。我的代码是释放工作区工厂的所有接口,但显然ArcObjects内部仍有引用。
答案 0 :(得分:0)
我发现了我的问题的答案。它不是需要关闭的内存工作区,它通常是ArcObjects。解决方案是确保在WM_DESTROY消息期间调用IAoInitialize接口的Shutdown方法。