Mam problemy z wydaniem mojego gdb w ArcGIS10. Moje narzędzie działa z lokalnym pakietem gdb, ale nie udało mi się go zwolnić po zakończeniu procesu. W Ag9.3 mogę go wypuścić po prostu przez Marshal.ReleaseComObject (obszar roboczy), ale to nie działa w AG10. Również zwolnienie wszystkich FeatureCursors nie pomaga. Tylko zamknięcie całej aplikacji „usuwa” blokadę. Czy ktoś wie, jak zwolnić mój plik gdb i „usunąć” blokadę bez zamykania aplikacji?
arcgis-10.0
arcobjects
AnnemieK
źródło
źródło
Odpowiedzi:
Rzuciłem okiem i znalazłem informacje na temat scenariusza blokowania, który prawdopodobnie masz. W ArcObjects 10 dostępna jest opcja SetWriteLock i FreeWriteLock.
spójrz na link do forum, a konkretnie próbkę od Lance Shipman z Esri http://forums.arcgis.com/threads/36881-the-performance-fgdb-api-amp-arcobjects
Baw się dobrze, CDB
źródło
Dotarcie do tego stanu jest łatwe - wystarczy jeden obiekt, który zawiera odniesienie do czegoś, co wymaga przestrzeni roboczej, aby pozostać przy życiu. Jak na przykład niestandardowy obiekt zawierający funkcję.
Gdy masz pewność, że nie masz takich odniesień, spróbuj wywołać GC.collect (), aby zmusić moduł wyrzucający śmieci do quasi-deterministycznego trybu czyszczenia
źródło
Jeśli używasz kursorów w swojej aplikacji, upewnij się, że używasz ComReleaser do zarządzania czasem życia kursorów i niszczenia ich, gdy skończysz z nimi. W przeciwnym razie mogą zablokować DBMS. Mogę się mylić, ale nie wydaje mi się, że wywołanie ReleaseComObject na samym obszarze roboczym usuwa odwołanie do kursorów. Spójrz na ten post na blogu ESRI ...
http://blogs.esri.com/Dev/blogs/geodatabase/archive/2008/12/18/Using-the-ComReleaser-to-manage-the-lifetime-of-cursors-in-.NET.aspx
źródło
Znaleziony pomysł z http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//003n0000007w000000
„Te pliki .lock są usuwane przy każdym uruchomieniu narzędzia Compact geoprocessing”
źródło