Korzystam z pliku gdb API .NET wrapper, który całkiem dobrze odpowiada moim potrzebom (w porównaniu z ArcObjects). Jedną z rzeczy, które muszę jeszcze ustalić, jest to, czy istnieje właściwy sposób, aby ustalić, czy tabela lub klasa funkcji (fc) jest zablokowana przed przystąpieniem do zapisu.
To, co robiłem, to pakowanie aktualizacji / wkładki w try / catch, a jeśli dojdę do „nie mogę uzyskać wyjątku blokady ...”, wiem, że obiekt jest zablokowany przez coś innego.
Czy brakuje mi lepszego sposobu na stwierdzenie, czy dana tabela lub fc można zapisać?
.net
file-geodatabase-api
użytkownik890
źródło
źródło
Odpowiedzi:
Nie sądzę, że istnieje haczyk w interfejsie API geobazy danych do tego jawnie. Możesz jednak skorzystać z obejścia, sprawdzając system plików pod kątem obecności pliku „..sr.lock”, jak wspomniano powyżej.
Geobazy plików są odczytywane jak foldery w systemie plików i będzie jeden z tych plików dla każdego komputera użytkownika, który ma aktywne (lub nieokreślone ...) połączenie z geobazą pliku (jednym w tabeli _gdb) i / lub dowolną funkcją klasy, z którymi są obecnie połączone.
Jest szybszy niż oczekiwanie na powrót błędu po awarii dostępu. Powyższa odpowiedź MattB z pulpitem blokady jest świetnym pomysłem dla wielu użytkowników.
źródło
Korzystam z ArcObjects i użyłem metody try / catch, o której wspomniałeś.
W moim przypadku więcej niż jeden użytkownik musi czytać i zapisywać dane w tej samej klasie obiektów w geobazie. Mam „ekran ładowania”, który pojawia się i informuje użytkownika, że dane są w użyciu, a następnie pętla próbuje co kilka sekund w tle, aż można dla nich utworzyć blokadę.
Inny sposób korzystania z zamków opisano poniżej. Wiem, że moja metoda patrzenia na pliki bloków różni się od tego, co chcesz zrobić, ale koncepcja jest taka sama i możesz użyć czegoś podobnego, jeśli chcesz określić typ blokady lub do kogo należy zamek . Oto informacje, jeśli jesteś zainteresowany.
Ponieważ możesz zobaczyć określone pliki blokad, do kogo należą, jakiego rodzaju są blokady itp., Jeśli zajrzysz do geobazy w Eksploratorze Windows, utworzysz autonomiczną aplikację „statusową”, która monitoruje pliki blokad określonych klasa funkcji, której wszyscy używamy.
Korzystając z tej metody, mogę zobaczyć w czasie rzeczywistym z łatwego do odczytania pulpitu nawigacyjnego, który ma zablokowaną klasę funkcji (na podstawie nazwy komputera) i jaki typ blokady mają. Na przykład, jeśli widzi blokadę „sr” (schemat), wiem, że dodała klasę funkcji do spisu treści, blokada „rd” oznacza, że czytają z klasy funkcji, blokada „wr” oznacza, że piszą dane i blokada „ed” oznaczają, że mają otwartą sesję edycji w klasie elementów.
Jest to bardzo pomocne podczas wykonywania konserwacji, aby móc zerknąć w dół i upewnić się, że nie będzie to miało negatywnego wpływu na nikogo. Wpis „Nieznany” ostrzega mnie również, gdy ktoś nieoczekiwany korzysta z klasy funkcji i mogę dalej badać.
Oto zrzut ekranu deski rozdzielczej, której używam.
źródło