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

23

Me di cuenta de que esto está ocurriendo hace meses cuando no pude alterar la estructura de la tabla en una instancia de ArcMap después de que se cerró otra. Cuando, por ejemplo, elimino o agrego algunos campos a una clase de entidad en ArcMap, guardo y cierro el documento y abro ArcCatalog e intento eliminar esa clase de entidad en particular. Obtengo el error Eliminar: No se pudo eliminar el error del objeto seleccionado. Esto ocurre generalmente cuando se abre una instancia de ArcMap que contiene capas que estoy tratando de eliminar, por lo que la solución es iniciar el Administrador de tareas de Windows y eliminar los procesos ArcMap.exe que, por algún motivo, aún están abiertos.

¿Alguien más tiene este problema?

Ahora se está ejecutando SP3 y el problema no se ha resuelto.

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

    
pregunta Jakub Sisak GeoGraphics 17.10.2011 - 22:44

5 respuestas

18

No es tu culpa y no puedes hacer mucho al respecto. Sin embargo, si tiene curiosidad acerca de la razón, lo que sucede es que hay una referencia circular COM (lo más probable es que alguien escuche algún origen de evento, como el Editor) y cuando las aplicaciones intentan salir, no puede hacerlo porque algunos objetos se mantienen. unos a otros vivos. Esto puede ser desde una extensión que haya instalado, o incluso desde el propio código ESRI. Esto solía ocurrir todo el tiempo y solo puede manifestarse bajo ciertas condiciones, como ciertos comandos visibles en la barra de herramientas.

De un antiguo tutorial de ArcObjects sobre conceptos COM :

  

Cuando la aplicación sale, libera la referencia que contiene al comando. Si el comando también sirve como un receptor de eventos, la aplicación contiene otra referencia al comando, que no puede liberarse hasta que el comando se desconecte de la fuente. Como el comando no conoce un punto en el que se pueda desconectar que no sea su propio destructor, esto causa una referencia circular por la cual la aplicación no puede salir sin que se destruya el comando y el destructor del comando nunca recibe una llamada porque la aplicación contiene una referencia al comando . Esto hace que la aplicación se cuelgue al salir.

Si es aún más curioso, elimine (o haga una copia de seguridad) de su Normal.mxt, que eliminará todas las personalizaciones y verá si el problema persiste.

    
respondido por el Ragi Yaser Burhum 18.10.2011 - 04:41
2

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

  1. Copiado y eliminado Normal.mxt
  2. Comenzó el nuevo documento de ArcMap (ArcMap se abrió en la configuración predeterminada)
  3. ArcMap cerrado (proceso cerrado como se esperaba)
  4. Toobars agregados: Analista 3D, Edición avanzada, Herramientas de marco de datos, Dibujar, Editar vértices, Editor, Georreferenciar, Etiquetar, Disposición, Ajuste
  5. Barras de herramientas dispuestas
  6. ArcMap cerrado (proceso cerrado como se esperaba)
  7. Comenzó un nuevo documento de ArcMap
  8. Agregué mi propia barra de herramientas personalizada con complementos
  9. ArcMap cerrado (proceso cerrado como se esperaba)
  10. Comenzó un documento de ArcMap existente
  11. Se usó la edición de inicio y detención personalizada en mi barra de herramientas, así como varias herramientas personalizadas
  12. ArcMap cerrado (proceso cerrado como se esperaba)

También eliminé y eliminé ArcBruTile

Los procesos de ArcMap ahora se cierran como se esperaba

    
respondido por el Jakub Sisak GeoGraphics 18.10.2011 - 15:33
2

No estoy intentando recuperar esta publicación de la muerte, pero al trabajar con el soporte de ESRI en este problema con un servidor Citrix (los usuarios se bloquean o se desconectan, arcgiscachemanager.exe no se cierra 20-30 minutos más tarde o más si En todo caso, los usuarios no pueden volver a ArcMap y luego tienen que confiar en que 2 administradores de servidores estarán disponibles para iniciar sesión en el servidor y liberarlos manualmente. ESRI está copiando y pegando una solución desde esta página y no lo hace. t trabajo Al menos no cuando se trabaja en un entorno Citrix.

Para Citrix, encontramos que la creación de dos claves de registro (una para anular el proceso bloqueado, otra para devolver la configuración a su estado original) "solucionó" el problema.

Para los que no son Citrix, hemos jugado con la idea de crear un script para terminar el proceso, pero como no estamos en Citrix, ya estamos en el servidor, decidimos que no era necesario.

Espero que esto ayude.

------- Copia datos de un ticket de soporte escalado -------- Citrix tiene configuraciones de clave de registro que ayudarán a administrar las aplicaciones que generan procesos secundarios en segundo plano. Tiene muchos de los síntomas que deberían 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 correcto de una aplicación publicada representa la sesión en estado activo: enlace

Sesiones activas después de que el usuario cierre la sesión en un entorno XenApp cuando se actualice de Windows Server 2003 a Windows Server 2008: enlace

XenApp 6.5 AppCenter Console muestra la aplicación de estado de la aplicación que no se está ejecutando: enlace

En estos artículos, se explica cómo las aplicaciones publicadas pueden provocar que una sesión no se cierre o que un usuario no se cierre correctamente. En esos casos, las sesiones tenían que ser restablecidas / salidas por un administrador o terminando el proceso desde el servidor que todavía se estaba ejecutando. Lo que sucede en Citrix es que publica la aplicación principal, en su caso ArcMap. Solo ese archivo ejecutable se cierra al salir de una aplicación (o si se bloquea). Como resultado, cualquier exe asociado con la aplicación que se generó cuando se abrió la aplicación no se cierra completamente en Citrix, lo que resulta en este estado. Entonces, 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 explican cómo puede agregar estos procesos secundarios a una clave de registro para cerrarlos automáticamente al cerrar la aplicación principal. Otra opción que puede explorar es un script de cierre de sesión para verificar los procesos y terminarlos si existen.

    
respondido por el MaryBeth 31.10.2013 - 22:39
2

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"
    
respondido por el shane 03.04.2014 - 17:16
1

PsKill de SysInternals Suite (un juego de herramientas casi obligatorio en mi opinión) se puede vincular a un acceso directo y disparar a voluntad para limpiar los procesos bloqueados. Hacerlo es feo, ya que no hace nada para resolver el problema original, pero sí permite que se lleve a cabo de manera rápida y eficiente.

pskill -t arcmap.exe

Últimamente he estado recibiendo procesos arcmap.exe invisibles varias veces a la semana, no tan a menudo antes, pero ha estado sucediendo durante algún tiempo. Normalmente estoy usando licencias concurrentes. Parece que ocurre con más frecuencia cuando tengo más de una sesión de Arcmap activa. Utilizamos el antivirus Sophos, en 64bit Win7.

    
respondido por el matt wilkie 18.10.2011 - 10:58

Lea otras preguntas en las etiquetas