He estado usando el archivo gdb API .NET wrapper, y se ha adaptado bastante bien a mis necesidades (en comparación con el uso de ArcObjects). Una de las cosas que aún tengo que descubrir es si hay una manera adecuada de determinar si una tabla o clase de entidad (fc) está bloqueada antes de intentar escribir en ella.
Lo que he estado haciendo es envolver una actualización / inserción en un intento / captura, y si llego a 'no puedo adquirir la excepción de bloqueo ...', sé que el objeto está bloqueado por otra cosa.
¿Me estoy perdiendo una mejor manera de saber si se puede escribir en una tabla o FC?
.net
file-geodatabase-api
usuario890
fuente
fuente
Respuestas:
No creo que haya un enlace en la API de geodatabase de archivos para esto explícitamente. Pero puede usar una solución alternativa verificando en el sistema de archivos la presencia de un archivo "..sr.lock" como se mencionó anteriormente.
Las geodatabases de archivos se leen como carpetas en el sistema de archivos y habrá uno de estos archivos para cada máquina de usuario que tenga una conexión activa (o no terminada ...) a la geodatabase de archivos (una en la tabla _gdb) y / o cualquier función clases a las que están conectados actualmente.
Es más rápido que esperar que regrese un error de una falla de acceso. La respuesta anterior de MattB con el panel de bloqueo es una gran idea para múltiples usuarios.
fuente
Yo uso ArcObjects y he usado el método try / catch que mencionaste.
En mi caso, más de un usuario necesita leer y escribir datos en la misma clase de entidad en una geodatabase. Tengo una "pantalla de carga" que aparece y le informa al usuario que los datos están en uso y luego un bucle sigue intentando cada pocos segundos en segundo plano hasta que se pueda crear un bloqueo para ellos.
La otra forma en que he usado bloqueos se describe a continuación. Sé que mi uso de este método para ver los archivos de bloqueo difiere de lo que desea hacer, pero el concepto es el mismo y puede usar algo similar si necesita determinar el tipo de bloqueo o a quién pertenece el bloqueo . Aquí está la información si está interesado.
Como puede ver los archivos de bloqueo específicos, a quién pertenecen, qué tipo de bloqueo son, etc., si mira dentro de la geodatabase en el Explorador de Windows, se crea una aplicación de "estado" independiente que monitorea los archivos de bloqueo de cada clase de entidad que todos usamos.
Utilizando este método, puedo ver en tiempo real desde un panel de control fácil de leer quién tiene esa clase de entidad bloqueada (según el nombre de la computadora) y qué tipo de bloqueo tienen. Por ejemplo, si ve un bloqueo "sr" (esquema), sé que tienen la clase de entidad agregada a su Tabla de contenido, un bloqueo "rd" significa que están leyendo desde la clase de entidad, un bloqueo "wr" significa que están escribiendo datos y un bloqueo "ed" significa que tienen una sesión de edición abierta en la clase de entidad.
Esto es muy útil cuando se realiza el mantenimiento para poder mirar hacia abajo y asegurarse de que no tendrá un efecto negativo en nadie. La entrada "Desconocido" también me alerta cuando alguien inesperado está usando la clase de entidad y puedo investigar más a fondo.
Aquí hay una captura de pantalla del tablero que uso.
fuente