Kiedy próbuję usunąć klasę funkcji, po lub podczas korzystania z aplikacji silnika Arcgis, która korzysta z tej samej klasy funkcji, pojawia się błąd dotyczący blokady, więc nie mogę uruchomić tej blokady, dopóki nie uruchomię ponownie komputera.
chciałbym poznać sposób usuwania zamków za pomocą arcpy lub arcobjects 10.1, byłoby idealnie, gdybym mógł jeździć zamkiem w aplikacji arcengine, która również blokuje geobazę, widziałem różne posty w SE na temat zamków, ale nikt nie z nich daje rozwiązanie darmowych blokad za pomocą ArcObjects.
arcobjects
arcpy
arcgis-10.1
arcgis-engine
.net
geogeek
źródło
źródło
Odpowiedzi:
Jeśli używasz skryptów Arcpy, problemy z blokadą danych stały się jeszcze bardziej problematyczne w 10.1.
Cóż, tak to powinno działać, ale rzadko tak jest. Zwykle kod działa od czasu do czasu, ale często ulega awarii w niewytłumaczalny sposób w różnych miejscach.
Problem wydaje się polegać na tym, że zamki pozostają tam „na chwilę”, ale kod działa znacznie szybciej niż prędkość, z jaką zamki są usuwane. Jednak niektóre z wbudowanych narzędzi Arc wydają się wymuszać usuwanie blokad na żądanie (ponieważ blokady dotyczą wszystkich całych GDB naraz, blokada uniemożliwi pracę z dowolną zawartą klasą funkcji). Te narzędzia to arcpy.Compact_management () i arcpy.Exists ().
Oto mała funkcja, której używam w moim kodzie, która ma radykalnie zwiększoną niezawodność (dla skryptu, który tworzy i edytuje wiele GDB i klas funkcji w nich zawartych):
Służy do tego po prostu przekazując ścieżkę obszaru roboczego (GDB) do funkcji i należy go wykonać po każdej operacji w obszarze roboczym (tj. Tworzenie GDB) lub klasach funkcji w obszarze roboczym (tj. Kursory, dodawanie pól, obliczenia itp.) . Na przykład (pokazany tutaj jako samodzielny skrypt, z funkcją u góry; aby użyć funkcji, skopiuj go i wklej między importem a rzeczywistym programem, jak pokazano tutaj):
źródło
Geobaza danych pliku ma 3 rodzaje blokad.
Proponowane rozwiązanie przez @StacyR będzie działać w każdych warunkach z wyjątkiem ekskluzywnych zamków edycyjnych (ED), zgodnie z ArcGIS dokumentacji pomocy.
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//003n0000007t000000
źródło
Jeśli blokady są tworzone przez Twój kod, to nie czyścisz po sobie. Zwolnij wszystkie odwołania do klas obiektów, obszarów roboczych, kursorów itp. Blokady są usuwane, gdy nie ma już żadnych odniesień do blokowanych obiektów.
źródło