我将 ESRI 地图控件嵌入到用 MFC/C++ 编写的自定义 ActiveX 控件中。自定义 ActiveX 控件用作地图控件包装器,因此我可以将其嵌入到仅运行时且非关系的特定环境中。感谢这个站点,我能够将特征点加载到内存工作区中。但是,现在托管环境在关闭时会卡在内存中,并且仅在我使用 InMemoryWorkspaceFactory 时才会这样做。因此,我的结论是,工厂锁定了一个文件或资源,并且不释放它,导致主机环境永远不会关闭。
有没有办法可以在我的 ActiveX 控件的 WM_DESTROY 消息期间手动删除所有要素和要素类并完全释放工作区?IWorkspaceFactory 的 Create 方法似乎没有对应物。我的代码正在向工作区工厂发布所有接口,但显然 ArcObjects 内部仍有引用。