C# и ArcGIS.Runtime 100.0.0 для .NET (закрыть Personal Geodatabase *.mdb)

0 голосов
спросил 28 Июль, 17 от SARVARBEK (150 баллов)

Я открыл существуюший база (Personal Geodatabase *.mdb) таким образом:



            IPropertySet propertySet = new PropertySetClass();
            propertySet.SetProperty("DATABASE", "C:\ConnectionFolderForArcGIS\newname.mdb");
            Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.AccessWorkspaceFactory");
            IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
            IWorkspace workspace= workspaceFactory.Open(propertySet, 0);
            IEnumDataset enumdataset = workspace.Datasets[esriDatasetType.esriDTFeatureDataset];

           ....


Вовремя работы программы при нажатии кнопки DELETE появилась такая ошибка:




An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll
Additional information: Процесс не может получить доступ к файлу "C:\ConnectionFolderForArcGIS\newname.mdb", так как этот файл используется другим процессом.


Error screenshot:

Error screenshots


Как можно закрыть открытую базу или как исправить эту ошибку ("C:\ConnectionFolderForArcGIS\newname.mdb" база не используются другими программами кроме программы которое дал ошибку).

 

Спасибо за помощь.

1 Ответ

0 голосов
ответил 02 Авг, 17 от Grigoriy (126,060 баллов)
выбран 27 Сен, 17 от varvara_t
 
Лучший ответ

И зачем же Вы интересно пытаетесь "убить" открытый Вами же workspace?

http://desktop.arcgis.com/en/arcobjects/latest/net/webframe.htm#fde31db0-af15-409f-81b5-75c23d4a762e.htm

 workspace factory is a co-creatable singleton object (see Interacting with singleton objects). A singleton object can only be instantiated once in a process

http://desktop.arcgis.com/en/arcobjects/latest/net/webframe.htm#d91e445e-47c5-41ea-94ca-45f945b73c0f.htm

Т.е. сначала нужно попытаться получить ссылку на com-объект, потом попытаться его "закрыть", а потом найти другой метод, который сможет "удалить" сам файл, если это так нужно делать именно в приложении.

Освобождать com-объект примерно вот так:

https://books.google.ru/books?id=IF7ZbBUz8-oC&pg=PT588&lpg=PT588&dq=workspaceFactory+release&source=bl&ots=CV7o0oa5N1&sig=-U756LI4lWJoBw-mJ6XEZnSz6DU&hl=ru&sa=X&ved=0ahUKEwjmwMjI5LjVAhVJXRoKHWRMBnsQ6AEIbTAJ#v=onepage&q=workspaceFactory%20release&f=false

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...