Suite

Les processus ArcMap.exe restent ouverts après la fermeture d'ArcMap ?

Les processus ArcMap.exe restent ouverts après la fermeture d'ArcMap ?


J'ai réalisé que cela se produisait il y a des mois lorsque je n'étais pas en mesure de modifier la structure de la table dans une instance d'ArcMap après la fermeture d'une autre instance. Lorsque, par exemple, je supprime ou ajoute des champs à une classe d'entités dans ArcMap, enregistrez et fermez le document, ouvrez ArcCatalog et tentez de supprimer cette classe d'entités particulière, j'obtiens l'erreur Échec de la suppression : Échec de la suppression des objets sélectionnés. Cela se produit généralement lorsqu'une instance d'ArcMap contenant des couches que j'essaie de supprimer est ouverte. La solution de contournement consiste donc à lancer le gestionnaire de tâches Windows et à tuer les processus ArcMap.exe qui, pour une raison quelconque, sont toujours ouverts.

Quelqu'un d'autre a ce problème ?

Maintenant en cours d'exécution SP3 et le problème n'a pas été résolu.


J'exécute une configuration très similaire sur une machine comparable et je n'ai pas ce problème là-bas.


Ce n'est pas de votre faute et vous ne pouvez pas y faire grand-chose. Cependant, si vous êtes curieux de connaître la raison, ce qui se passe, c'est qu'il y a une référence circulaire COM (très probablement à quelque chose qui écoute une source d'événement - comme l'éditeur) et lorsque les applications tentent de quitter, cela ne peut pas, car certains objets conservent l'autre vivant. Cela peut provenir d'une extension que vous avez installée, ou même du code ESRI lui-même. Cela arrivait tout le temps et cela ne peut se manifester que sous certaines conditions, comme certaines commandes étant visibles dans la barre d'outils.

À partir d'un ancien didacticiel ArcObjects sur les concepts COM :

Lorsque l'application se ferme, elle libère la référence qu'elle détient à la commande. Si la commande sert également de récepteur d'événements, l'application détient une autre référence à la commande, qui ne peut pas être libérée tant que la commande n'est pas déconnectée de la source. Comme la commande ne connaît pas un point auquel elle peut se déconnecter autre que son propre destructeur, cela provoque une référence circulaire par laquelle l'application ne peut pas quitter sans que la commande ne soit détruite et le destructeur de la commande n'est jamais appelé car l'application détient une référence à la commande . Cela provoque le blocage de l'application à la sortie.

Si vous êtes encore plus curieux, supprimez (ou sauvegardez) votre Normal.mxt, ce qui effacera toutes les personnalisations et verra si ce problème persiste.


Merci @Kirk et @Ragi d'avoir résolu ce problème ! Voici ce que j'ai fait en surveillant les processus du gestionnaire de tâches :

  1. Normal.mxt sauvegardé et supprimé
  2. Démarrage d'un nouveau document ArcMap (ArcMap ouvert dans la configuration par défaut)
  3. ArcMap fermé (processus fermé comme prévu)
  4. Barres d'outils ajoutées : analyste 3D, édition avancée, outils de bloc de données, dessin, édition de sommets, éditeur, géoréférencement, étiquetage, mise en page, capture
  5. Barres d'outils organisées
  6. ArcMap fermé (processus fermé comme prévu)
  7. Démarrage d'un nouveau document ArcMap
  8. Ajout de ma propre barre d'outils personnalisée avec des compléments
  9. ArcMap fermé (processus fermé comme prévu)
  10. Démarrage d'un document ArcMap existant
  11. J'ai utilisé l'édition personnalisée de démarrage et d'arrêt sur ma barre d'outils ainsi que plusieurs outils personnalisés
  12. ArcMap fermé (processus fermé comme prévu)

J'ai également supprimé et supprimé ArcBruTile

Les processus ArcMap se ferment maintenant comme prévu


N'essayant pas de ramener ce message d'entre les morts, mais tout en travaillant avec le support ESRI sur ce problème avec un serveur Citrix (les utilisateurs se bloquent ou se déconnectent, arcgiscachemanager.exe ne se ferme pas 20-30 minutes plus tard ou plus, voire pas du tout, les utilisateurs ne peuvent pas revenir à ArcMap et doivent ensuite compter sur l'un des 2 administrateurs de serveur pour être disponibles pour se connecter au serveur et les libérer manuellement), ESRI copie et colle une solution à partir de cette page et cela ne fonctionne pas. Du moins pas lorsque vous travaillez dans un environnement Citrix.

Pour Citrix, nous avons constaté que la création de deux clés de registre (une pour tuer le processus bloqué, une pour remettre les paramètres à leur état d'origine) a "résolu" le problème.

Pour les non-Citrix, nous avons caressé l'idée de créer simplement un script pour tuer le processus, mais comme lorsque nous ne sommes pas dans Citrix, nous sommes déjà sur le serveur, nous avons décidé que ce n'était pas nécessaire.

J'espère que cela t'aides.

-------données copiées à partir d'un ticket de support escaladé -------- Citrix dispose de paramètres de clé de registre qui aideront à gérer les applications qui génèrent des processus secondaires en arrière-plan. Vous avez beaucoup de symptômes qui devraient faire de cette solution une configuration plausible. Consultez les articles de connaissances Citrix suivants :

La déconnexion gracieuse d'une application publiée rend la session à l'état actif : http://support.citrix.com/article/CTX891671

Sessions actives après la déconnexion de l'utilisateur dans un environnement XenApp lors de la mise à niveau de Windows Server 2003 vers Windows Server 2008 : http://support.citrix.com/article/CTX134956

XenApp 6.5 AppCenter Console affiche l'état de l'application Application non en cours d'exécution : http://support.citrix.com/article/CTX133328

Dans ces articles, il explique comment les applications publiées peuvent empêcher la fermeture d'une session ou empêcher un utilisateur de se déconnecter correctement. Dans ces cas, les sessions devaient être réinitialisées/fermées par un administrateur ou en mettant fin au processus à partir du serveur en cours d'exécution. Ce qui se passe dans Citrix, c'est que vous publiez l'application principale, dans votre cas ArcMap. Seul cet exe est fermé lorsque vous quittez une application (ou s'il plante). Par conséquent, tous les exe associés à l'application qui ont été générés lors de l'ouverture de l'application ne sont pas complètement fermés dans Citrix, ce qui entraîne cet état. Ainsi, lorsque ArcGISCacheMgr.exe prend beaucoup de temps à s'exécuter ou que l'application se bloque, vos utilisateurs finaux ne peuvent pas démarrer une nouvelle session.

Les articles expliquent comment ajouter ces processus secondaires à une clé de registre pour les fermer automatiquement à la fermeture de l'application principale. Une autre option que vous pouvez explorer est un script de déconnexion pour vérifier les processus et les terminer s'ils existent.


Créez un fichier .bat, collez-le et enregistrez-le sur le bureau.

taskkill /IM ArcGisCacheMgr.exe /f taskkill /IM ArcGisConnection.exe /f "C:Program Files (x86)ArcGISDesktop10.1inArcMap.exe"

PsKill de la suite SysInternals (une boîte à outils sacrément presque obligatoire à mon avis) peut être lié à un raccourci et déclenché à volonté pour nettoyer les processus bloqués. Cela est moche en ce sens que cela ne résout en rien le problème initial, mais cela permet de continuer rapidement et efficacement.

pskill -t arcmap.exe

J'ai reçu des processus arcmap.exe invisibles plusieurs fois par semaine ces derniers temps, pas si souvent auparavant, mais cela se produit depuis un certain temps. J'utilise généralement des licences simultanées. Cela semble se produire plus souvent lorsque j'ai plus d'une session Arcmap active. Nous utilisons l'antivirus Sophos, sur 64bit Win7.


Voir la vidéo: GIS Flood Analysis