11 votos

Cómo liberar el bloqueo en un gdb?

Tengo problemas para liberar mi gdb en ArcGIS10. Mi herramienta funciona con un local de gdb, pero no pude liberarlo después del proceso. En Ag9.3 puedo liberar simplemente por el Mariscal.ReleaseComObject(espacio de trabajo), pero esto no funciona en AG10. También la liberación de todos los FeatureCursors no ayuda. Sólo el cierre de la aplicación en su totalidad "elimina" el bloqueo. ¿Alguien sabe cómo liberar mi gdb y "eliminar" el bloqueo, sin necesidad de cerrar la aplicación?

2voto

FlySwat Puntos 61945

Llegar a esta condición es fácil - todo lo que necesita es un objeto que contiene una referencia a algo que necesita el área de trabajo para mantenerse con vida. Como un objeto personalizado que tiene una Característica, por ejemplo.

Una vez que esté seguro de que usted no tenga ninguna de estas referencias, intente llamar a la GC.collect() para forzar el recolector de basura en una cuasi-determinista modo de limpieza

2voto

mrdenny Puntos 171

Yo tenía una mirada rápida y se encontró información sobre el bloqueo de escenario que parece estar teniendo. En ArcObjects 10 hay un SetWriteLock y FreeWriteLock opción.

mira el enlace de foro específicamente la muestra de Lanza de Shipman de Esri http://forums.arcgis.com/threads/36881-the-performance-fgdb-api-amp-arcobjects

Divertirse, CDB

2voto

Jake Puntos 126

Si usted está usando los cursores en su aplicación, asegúrese de usar el ComReleaser para gestionar la vida útil de los cursores y destruirlos cuando haya terminado con ellos. De lo contrario, se puede bloquear el DBMS. Yo podría estar equivocado, pero yo no creo que llamar a ReleaseComObject en el área de trabajo solo elimina la referencia a los cursores. Echa un vistazo a este post en el blog de ESRI...

http://blogs.esri.com/Dev/blogs/geodatabase/archive/2008/12/18/Using-the-ComReleaser-to-manage-the-lifetime-of-cursors-in-.NET.aspx

0voto

Oliver Gierke Puntos 11630

Encontrado Idea de http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//003n0000007w000000

"Estos .bloqueo de archivos se eliminan cada vez que se ejecuta el geoprocesamiento herramienta Compacta"

string[] lockfiles = Directory.GetFiles(project.Path, "*.lock",   SearchOption.AllDirectories);

if(lockfiles.Length > 0)
{
int lockCt = 0;
while (lockCt < lockfiles.Length)
{
 string inFGDB = System.IO.Path.GetDirectoryName(lockfiles[lockCt]);

 ESRI.ArcGIS.DataManagementTools.Compact compactProcess = new   ESRI.ArcGIS.DataManagementTools.Compact();

 compactProcess.in_workspace = inFGDB;

 geoprocessor.Execute(compactProcess ,null);

  lockCt++;
}
}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X