0

我将 ESRI 地图控件嵌入到用 MFC/C++ 编写的自定义 ActiveX 控件中。自定义 ActiveX 控件用作地图控件包装器,因此我可以将其嵌入到仅运行时且非关系的特定环境中。感谢这个站点,我能够将特征点加载到内存工作区中。但是,现在托管环境在关闭时会卡在内存中,并且仅在我使用 InMemoryWorkspaceFactory 时才会这样做。因此,我的结论是,工厂锁定了一个文件或资源,并且不释放它,导致主机环境永远不会关闭。

有没有办法可以在我的 ActiveX 控件的 WM_DESTROY 消息期间手动删除所有要素和要素类并完全释放工作区?IWorkspaceFactory 的 Create 方法似乎没有对应物。我的代码正在向工作区工厂发布所有接口,但显然 ArcObjects 内部仍有引用。

4

1 回答 1

0

我发现了我的问题的答案。需要关闭的不是内存中的工作空间,而是一般的 ArcObjects。解决方法是确保在 WM_DESTROY 消息期间调用 IaoInitialize 接口的 Shutdown 方法。

于 2010-08-10T00:12:10.797 回答