2010-08-05 4 views
0

MFC/C++로 작성된 사용자 지정 ActiveX 컨트롤에 ESRI Map 컨트롤을 포함합니다. 사용자 지정 ActiveX 컨트롤은 Map Control 래퍼 역할을하므로 런타임 전용 및 비 관계형 환경에 포함 할 수 있습니다. 이 사이트 덕분에 기능 포인트를 메모리 내 작업 공간으로로드 할 수 있습니다. 그러나 호스팅 환경이 닫힐 때 메모리에 갇히게되고 InMemoryWorkspaceFactory를 사용할 때만이 작업이 수행됩니다. 결론적으로 필자의 결론은 공장이 파일이나 리소스를 잠그고 그것을 공개하지 않음으로써 호스트 환경을 절대로 닫을 수 없다는 것입니다.ESRI 맵 컨트롤에서 InMemoryWorkspaceFactory를 어떻게 해제합니까?

ActiveX 컨트롤의 WM_DESTROY 메시지 중에 모든 기능과 기능 클래스를 수동으로 삭제하고 작업 영역을 완전히 해제 할 수있는 방법이 있습니까? IWorkspaceFactory의 Create 메소드에 상응하는 것으로 보이지 않습니다. 내 코드는 작업 공간 팩터 리에 대한 모든 인터페이스를 공개하지만 ArcObjects에는 내부적으로 여전히 참조가 있습니다.

답변

0

나는 내 질문에 대한 답을 발견했다. 닫힐 필요가있는 메모리 내 작업 공간이 아니라 일반적으로 ArcObjects였습니다. 해결 방법은 WM_DESTROY 메시지 중에 IAoInitialize 인터페이스의 Shutdown 메서드를 호출해야합니다.

관련 문제