23 votos

¿Los procesos de ArcMap.exe permanecen abiertos después de cerrar ArcMap?

Me di cuenta de que esto está sucediendo hace meses cuando yo no era capaz de alterar la estructura de la tabla en una instancia de ArcMap después de otra instancia se cerró. Cuando, por ejemplo, elimino o añado algunos campos a una clase de característica en ArcMap, guardo y cierro el documento y abro ArcCatalog e intento eliminar esa clase de característica en particular, obtengo el error Delete Failed: Failed to delete selected object(s) error. Esto suele ocurrir cuando se abre una instancia de ArcMap que contiene las capas que estoy intentando eliminar, por lo que la solución consiste en abrir el Administrador de tareas de Windows y matar los procesos de ArcMap.exe que, por alguna razón, siguen abiertos.

¿Alguien más tiene este problema?

Ahora estoy ejecutando el SP3 y el problema no se ha resuelto.

enter image description here


Estoy ejecutando una configuración muy similar en una máquina comparable y no tengo este problema allí.

18voto

FlySwat Puntos 61945

No es culpa tuya y no hay mucho que puedas hacer al respecto. Sin embargo, si tienes curiosidad sobre la razón, lo que ocurre es que hay una referencia circular COM (lo más probable a algo escuchando alguna fuente de eventos - como el Editor) y cuando la aplicación intenta salir no puede, porque algunos objetos se mantienen vivos entre sí. Esto puede ser de una extensión que haya instalado, o incluso desde dentro del propio código ESRI. Esto solía ocurrir todo el tiempo y puede que sólo se manifieste bajo ciertas condiciones, como que ciertos comandos estén visibles en la barra de herramientas.

De un antiguo tutorial de ArcObjects sobre conceptos COM :

Cuando la aplicación sale, libera la referencia que tiene al comando. Si el comando también sirve como sumidero de eventos, la aplicación mantiene otra referencia al comando, que no puede ser liberada hasta que el comando se desconecte de la fuente. Como el comando no conoce un punto en el que pueda desconectarse que no sea su propio destructor, esto causa una referencia circular por la que la aplicación no puede salir sin que el comando se destruya y el destructor del comando nunca es llamado porque la aplicación mantiene una referencia al comando. Esto causa que la aplicación se cuelgue al salir.

Si tienes aún más curiosidad, borra (o haz una copia de seguridad) de tu Normal.mxt, lo que borrará todas las personalizaciones y comprueba si este problema persiste.

2voto

CodeSlave Puntos 7133

¡Gracias @Kirk y @Ragi para resolver este problema! Esto es lo que he hecho al supervisar los procesos del Administrador de tareas:

  1. Copia de seguridad y borrado de Normal.mxt
  2. Inicio de un nuevo documento ArcMap (ArcMap abierto en la configuración por defecto)
  3. ArcMap cerrado (el proceso se cerró como se esperaba)
  4. Añadido Toobars: Analista 3D, Edición avanzada, Herramientas de marco de datos, Dibujar, Editar vértices, Editor, Georreferenciación, Etiquetado, Disposición, Ajustar
  5. Barras de herramientas ordenadas
  6. ArcMap cerrado (el proceso se cerró como se esperaba)
  7. Inicio de un nuevo documento ArcMap
  8. He añadido mi propia barra de herramientas personalizada con complementos
  9. ArcMap cerrado (el proceso se cerró como se esperaba)
  10. Inicio de un documento ArcMap existente
  11. Utilizado inicio personalizado y detener la edición en mi barra de herramientas, así como varias herramientas personalizadas
  12. ArcMap cerrado (el proceso se cerró como se esperaba)

También he eliminado y borrado ArcBruTile

Los procesos de ArcMap se cierran ahora como se esperaba

2voto

No estoy tratando de traer este post de entre los muertos, pero mientras trabajaba con el apoyo de ESRI en este problema con un servidor Citrix (los usuarios se bloquean o cerrar la sesión, arcgiscachemanager.exe no se cierra 20-30 minutos más tarde o más en todo caso, los usuarios no pueden volver a ArcMap y luego tienen que depender de uno de 2 administradores de servidores para estar disponible para iniciar sesión en el servidor y liberar manualmente), ESRI está copiando y pegando una solución de esta página y no funciona. Al menos no cuando se trabaja en un entorno Citrix.

En el caso de Citrix, descubrimos que la creación de dos claves de registro (una para matar el proceso colgado y otra para devolver la configuración a su estado original) "solucionaba" el problema.

Para los que no están en Citrix, hemos jugado con la idea de simplemente crear un script para matar el proceso, pero como cuando no estamos en Citrix, ya estamos en el servidor, decidimos que no era necesario.

Espero que esto ayude.

-------copiado de datos del ticket de soporte escalado-------- Citrix tiene configuraciones de claves de registro que ayudarán a administrar las aplicaciones que generan procesos secundarios en segundo plano. Usted tiene muchos de los síntomas que deben hacer de esta solución una configuración plausible. Eche un vistazo a los siguientes artículos de conocimiento de Citrix:

El cierre de sesión de una aplicación publicada deja la sesión en estado activo: http://support.citrix.com/article/CTX891671

Sesiones activas después de que el usuario cierra sesión en un entorno XenApp cuando se actualiza de Windows Server 2003 a Windows Server 2008: http://support.citrix.com/article/CTX134956

La consola AppCenter de XenApp 6.5 muestra el estado de la aplicación Aplicación no en ejecución: http://support.citrix.com/article/CTX133328

En estos artículos, se discute cómo las aplicaciones publicadas pueden causar que una sesión no se cierre o que un usuario no se desconecte correctamente. En esos casos, las sesiones tenían que ser reiniciadas/salidas por un administrador o terminando el proceso desde el servidor que seguía en ejecución. Lo que ocurre en Citrix es que se publica la aplicación principal, en tu caso ArcMap. Sólo ese exe se cierra al salir de una aplicación (o si se bloquea). Como resultado, cualquier exe asociado con la aplicación que se generaron cuando se abrió la aplicación no se cierra completamente a cabo en Citrix que resulta en este estado. Por lo tanto, cuando ArcGISCacheMgr.exe tarda mucho tiempo en ejecutarse o la aplicación se bloquea, los usuarios finales no pueden iniciar una nueva sesión.

Los artículos discuten cómo puede añadir estos procesos secundarios a una clave del registro para cerrarlos automáticamente al cerrar la aplicación principal. Otra opción que puede explorar es una secuencia de comandos de cierre de sesión para buscar los procesos y terminarlos si existen.

2voto

mipadi Puntos 135410

Crea un archivo .bat, pégalo y guárdalo en el escritorio.

 taskkill /IM ArcGisCacheMgr.exe /f
 taskkill /IM ArcGisConnection.exe /f
 "C:\Program Files (x86)\ArcGIS\Desktop10.1\bin\ArcMap.exe"

1voto

Greg Puntos 1756

PsKill del Suite SysInternals (un conjunto de herramientas casi obligatorio en mi opinión) puede vincularse a un acceso directo y dispararse a voluntad para limpiar los procesos colgados. Hacer esto es feo porque no resuelve el problema original, pero permite continuar de forma rápida y eficiente.

pskill -t arcmap.exe

Últimamente me aparecen procesos invisibles de arcmap.exe varias veces a la semana, antes no tan a menudo, pero lleva tiempo ocurriendo. Normalmente uso licencias concurrentes. Parece ocurrir más a menudo cuando tengo más de una sesión de Arcmap activa. Utilizamos el antivirus Sophos, en Win7 de 64 bits.

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