Как освободить InMemoryWorkspaceFactory в элементе управления картой ESRI? - PullRequest
0 голосов
/ 06 августа 2010

Я встраиваю элемент управления ESRI Map в пользовательский элемент управления ActiveX, написанный на MFC / C ++. Пользовательский элемент управления ActiveX служит оболочкой для элемента управления Map, поэтому я могу встроить его в определенную среду, которая является только средой выполнения и нереляционной. Благодаря этому сайту я могу загрузить характерные точки в рабочую область в памяти. Однако среда хостинга теперь застревает в памяти при закрытии, и это происходит только тогда, когда я использую InMemoryWorkspaceFactory. Поэтому я пришел к выводу, что фабрика заблокировала файл или ресурс и, не выпуская их, приводит к тому, что среда хоста никогда не закрывается.

Можно ли как-нибудь вручную удалить все объекты и классы объектов во время сообщения WM_DESTROY моего элемента управления ActiveX и полностью освободить рабочее пространство? Похоже, что нет аналога метода Create IWorkspaceFactory. Мой код выпускает все интерфейсы для фабрики рабочих пространств, но очевидно, что внутри ArcObjects все еще есть ссылки.

1 Ответ

0 голосов
/ 10 августа 2010

Я нашел ответ на свой вопрос. Это было не рабочее пространство в памяти, которое нужно было закрывать, это был ArcObjects в целом. Решение заключается в том, чтобы во время сообщения WM_DESTROY вызывать метод Shutdown интерфейса IAoInitialize.

...