ArcMap.exe-Prozesse bleiben nach dem Schließen von ArcMap geöffnet? [geschlossen]

23

Ich habe festgestellt, dass dies vor Monaten passiert ist, als ich die Tabellenstruktur in einer Instanz von ArcMap nicht ändern konnte, nachdem eine andere Instanz geschlossen wurde. Wenn ich beispielsweise in ArcMap einige Felder zu einer Feature-Class entferne oder hinzufüge, das Dokument speichere und schließe und ArcCatalog öffne und versuche, diese bestimmte Feature-Class zu löschen, wird der Fehler "Löschen fehlgeschlagen: Fehler beim Löschen ausgewählter Objekte" angezeigt. Dies ist normalerweise der Fall, wenn eine Instanz von ArcMap geöffnet wird, die Layer enthält, die ich zu löschen versuche. Sie können also den Windows Task-Manager starten und die ArcMap.exe-Prozesse beenden, die aus irgendeinem Grund noch geöffnet sind.

Hat noch jemand dieses Problem?

Jetzt läuft SP3 und das Problem wurde nicht gelöst.

Bildbeschreibung hier eingeben


Ich verwende ein sehr ähnliches Setup auf einem vergleichbaren Computer und habe dieses Problem dort nicht.

Jakub Sisak GeoGraphics
quelle
4
JA! Weitere Informationen finden Sie in meinem Forumsbeitrag in den ESRI-Foren. Ich versuche es zu reproduzieren (scheint zufällig ...), um ein Ticket bei ESRI zu erhalten.
SaultDon
Haben Sie Erweiterungen von Drittanbietern geladen? Ich frage mich, ob eine Ausnahme in IExtension.Shutdown dies erklären könnte.
Kirk Kuykendall
@kirk Ich habe keine und noch nie eine auf dieser Installation von v10 installiert. Dies ist sogar eine Neuinstallation von Windows7. Ähnlich wie bei Ihnen ist dies seit SP1 so geblieben.
SaultDon
2
Sie führen fast 100 Prozesse aus, es könnte wirklich alles sein, aber ich wäre am misstrauischsten gegenüber Virenscannern, Backup-Software und Suchindexdiensten.
blah238
@Kirk - keine Erweiterungen für dieses spezielle Setup, aber ich werde es überprüfen, wenn ich zur Arbeit komme. Ich habe einige meiner eigenen Add-Own-Tools. Ich habe ein ähnliches Setup auf einem anderen Windows 7-Computer mit den gleichen Add-Ons und keine Probleme.
Jakub Sisak GeoGraphics

Antworten:

18

Nicht deine Schuld und nicht viel, was du dagegen tun kannst. Wenn Sie jedoch neugierig sind, was der Grund ist, liegt das daran, dass es einen COM-Zirkelverweis gibt (am wahrscheinlichsten, wenn eine Ereignisquelle wie der Editor abgehört wird) und wenn die Anwendungen versuchen, ihn zu beenden, dies nicht möglich ist, da einige Objekte beibehalten werden einander lebendig. Dies kann von einer von Ihnen installierten Erweiterung oder sogar aus dem ESRI-Code selbst stammen. Dies war immer der Fall und kann sich nur unter bestimmten Bedingungen bemerkbar machen, z. B. wenn bestimmte Befehle in der Symbolleiste angezeigt werden.

Aus einem alten ArcObjects-Lernprogramm zu COM-Konzepten :

Wenn die Anwendung beendet wird, gibt sie den Verweis auf den Befehl frei. Wenn der Befehl auch als Ereignissenke dient, enthält die Anwendung einen weiteren Verweis auf den Befehl, der erst freigegeben werden kann, wenn der Befehl von der Quelle getrennt wird. Da der Befehl keinen Punkt kennt, an dem er außer seinem eigenen Destruktor die Verbindung trennen kann, wird ein Zirkelverweis erstellt, durch den die Anwendung nicht beendet werden kann, ohne dass der Befehl zerstört wird, und der Destruktor des Befehls wird nie aufgerufen, da die Anwendung einen Verweis auf den Befehl enthält . Dadurch bleibt die Anwendung beim Beenden hängen.

Wenn Sie noch neugieriger sind, löschen (oder sichern) Sie Ihre Datei "Normal.mxt". Dadurch werden alle Anpassungen gelöscht und es wird überprüft, ob das Problem weiterhin besteht.

Ragi Yaser Burhum
quelle
3
+1 gute Erklärung. Ich frage mich, ob alle Befehlsleisten bis auf eine geschlossen sind, speichern und beenden und versuchen, das Problem zu reproduzieren. Ich glaube nicht, dass ICommand.OnCreate aufgerufen wird, bis die Symbolleiste sichtbar ist. Wenn Sie die Symbolleisten nach und nach einschalten und Tests wiederholen, können Sie möglicherweise die Liste der verdächtigen Befehle eingrenzen.
Kirk Kuykendall
Gute Erklärung. Vielen Dank. @Kirk - Ich habe ein Drittanbieter-Tool, das ich vergessen habe (ArcBruTile). Das werde ich entfernen. Mein Add-In führt in der Tat ein Event-Listening durch, daher frage ich mich, ob meine Symbolleiste die Ursache des Problems sein könnte. Das Seltsame ist, dass ich auf meinem anderen Computer die gleichen Tools sowie die gleichen Standardsymbolleisten geladen habe und dieses Problem dort nicht habe. Ich werde versuchen, mit einer neuen Normal.mxt zu beginnen, das ist ein guter Vorschlag.
Jakub Sisak GeoGraphics
Manchmal kann es auch erforderlich sein, dass ein Ereignis eintritt, damit sich dieser Zustand manifestiert, wenn die Handlung, nur sichtbar zu sein, nicht unbedingt ausreicht, um den Zirkelverweis auszulösen. Zum Beispiel kann der Befehl sichtbar sein und alles ist in Ordnung und wartet darauf, dass das "StartEditing" -Ereignis eintritt. Sobald dies ausgelöst wird, fängt es an, Verweise auf andere Dinge zu erfassen - und dort richtet es seine anderen Verweise ein, die die kreisförmige Bedingung verursachen. Dies war ein klassisches Problem bei VB-Erweiterungen und vor allem bei .NET-Befehlen, da die Garbage Collection nicht deterministisch war
Ragi Yaser Burhum,
2

Vielen Dank an @Kirk und @Ragi für die Lösung dieses Problems! Folgendes habe ich beim Überwachen der Task-Manager-Prozesse getan:

  1. Sicherte und löschte Normal.mxt
  2. Neues ArcMap-Dokument gestartet (ArcMap wurde in der Standardkonfiguration geöffnet)
  3. Geschlossene ArcMap (Prozess wie erwartet geschlossen)
  4. Hinzugefügte Toobars: 3D Analyst, Erweiterte Bearbeitung, Datenrahmen-Tools, Zeichnen, Scheitelpunkte bearbeiten, Editor, Georeferenzierung, Beschriftung, Layout, Fang
  5. Symbolleisten angeordnet
  6. Geschlossene ArcMap (Prozess wie erwartet geschlossen)
  7. Neues ArcMap-Dokument gestartet
  8. Eigene Symbolleiste mit Add-Ins hinzugefügt
  9. Geschlossene ArcMap (Prozess wie erwartet geschlossen)
  10. Startete ein vorhandenes ArcMap-Dokument
  11. Benutzerspezifische Bearbeitung starten und beenden in meiner Symbolleiste sowie in mehreren benutzerdefinierten Werkzeugen
  12. Geschlossene ArcMap (Prozess wie erwartet geschlossen)

Ich habe auch ArcBruTile entfernt und gelöscht

ArcMap-Prozesse werden jetzt wie erwartet geschlossen

Jakub Sisak GeoGraphics
quelle
2
sprach zu früh. Das Problem ist zurück.
Jakub Sisak GeoGraphics
Leider hat die ESRI-Unterstützung die obige Antwort als Lösung kopiert und
eingefügt
@ Jakub Haben Sie jemals eine Lösung für dieses Problem gefunden? Ich erstelle ein Add-In und habe kürzlich festgestellt, dass nach dem Beenden mehrere ArcMap-Prozesse ausgeführt werden.
Barbarossa
Es scheint, dass der Konsens darin besteht, dass die Prozesse durch Add-Ins / Erweiterungen von Drittanbietern geöffnet und nicht ordnungsgemäß geschlossen werden. Ich erstelle meine eigenen Add-Ins und habe möglicherweise gerade meinen gesamten Code durchgearbeitet, um sicherzustellen, dass alle Objekte freigegeben wurden, oder, was wahrscheinlicher ist, das Problem wurde von ESRI an der Quelle behoben, da es in 10.3 nicht mehr auftritt und ich glaube, dass es bereits verschwunden ist 10.2. Wenn dies immer noch geschieht, deinstallieren und / oder entfernen Sie ALLE Add-Ins von Drittanbietern und prüfen Sie, ob das Problem weiterhin besteht. Wenn Sie nicht weiterdrehen, fügen Sie einen nach dem anderen hinzu, um den Täter zu lokalisieren. Hoffe das hilft.
Jakub Sisak GeoGraphics
2

Ich versuche nicht, diesen Beitrag von den Toten zurückzubringen, aber während ich mit der ESRI-Unterstützung an diesem Problem mit einem Citrix-Server arbeite (Benutzer stürzen ab oder melden sich ab), wird arcgiscachemanager.exe nicht 20-30 Minuten später oder mehr, wenn überhaupt, geschlossen. Benutzer können nicht zu ArcMap zurückkehren und müssen sich darauf verlassen, dass 2 Serveradministratoren verfügbar sind, um sich am Server anzumelden und sie manuell freizugeben.) ESRI kopiert und fügt eine Lösung von dieser Seite ein und funktioniert nicht. Zumindest nicht, wenn Sie in einer Citrix-Umgebung arbeiten.

Für Citrix haben wir festgestellt, dass das Problem durch das Erstellen von zwei Registrierungsschlüsseln (einer zum Beenden des Hängenbleibens und einer zum Zurückversetzen der Einstellungen in den ursprünglichen Zustand) behoben wurde.

Für Nicht-Citrix haben wir mit der Idee gespielt, nur ein Skript zu erstellen, um den Prozess abzubrechen. Da wir uns jedoch nicht in Citrix befinden, befinden wir uns bereits auf dem Server und haben entschieden, dass dies nicht erforderlich ist.

Hoffe das hilft.

------- kopierte Daten von einem eskalierten Support-Ticket -------- Citrix verfügt über Registrierungsschlüsseleinstellungen, mit denen Anwendungen verwaltet werden können, die sekundäre Prozesse im Hintergrund erzeugen. Sie haben viele Symptome, die diese Lösung zu einer plausiblen Lösung machen sollten. Sehen Sie sich die folgenden Citrix Knowledge-Artikel an:

Die ordnungsgemäße Abmeldung von einer veröffentlichten Anwendung versetzt die Sitzung in den aktiven Zustand: http://support.citrix.com/article/CTX891671

Aktive Sitzungen nach dem Abmelden des Benutzers in einer XenApp-Umgebung bei einem Upgrade von Windows Server 2003 auf Windows Server 2008: http://support.citrix.com/article/CTX134956

XenApp 6.5 AppCenter Console zeigt den Anwendungsstatus an. Die Anwendung wird nicht ausgeführt: http://support.citrix.com/article/CTX133328

In diesen Artikeln wird erläutert, wie veröffentlichte Anwendungen dazu führen können, dass eine Sitzung nicht geschlossen oder ein Benutzer nicht ordnungsgemäß abgemeldet wird. In diesen Fällen mussten Sitzungen von einem Administrator zurückgesetzt / beendet werden oder indem der Prozess von dem Server beendet wurde, der noch lief. In Citrix veröffentlichen Sie die Hauptanwendung, in Ihrem Fall ArcMap. Nur diese Exe wird geschlossen, wenn eine Anwendung beendet wird (oder wenn sie abstürzt). Infolgedessen werden alle mit der Anwendung verknüpften Exes, die beim Öffnen der Anwendung erzeugt wurden, in Citrix nicht vollständig geschlossen, was zu diesem Status führt. Wenn die Ausführung von ArcGISCacheMgr.exe also lange dauert oder die Anwendung abstürzt, können Ihre Endbenutzer keine neue Sitzung starten.

In den Artikeln wird erläutert, wie Sie diese sekundären Prozesse einem Registrierungsschlüssel hinzufügen können, um sie beim Schließen der Hauptanwendung automatisch zu schließen. Eine weitere Option, die Sie untersuchen können, ist ein Abmeldeskript, mit dem Sie nach den Prozessen suchen und diese, falls vorhanden, beenden können.

MaryBeth
quelle
2

Erstellen Sie eine .bat-Datei, fügen Sie diese ein und speichern Sie sie auf dem Desktop.

 taskkill /IM ArcGisCacheMgr.exe /f
 taskkill /IM ArcGisConnection.exe /f
 "C:\Program Files (x86)\ArcGIS\Desktop10.1\bin\ArcMap.exe"
Shane
quelle
4
Eine Erklärung der Funktionsweise dieser Befehle (und ihrer Optionen) hilft dem Uneingeweihten, Ihre Lösung zu verstehen.
Whuber
1

PsKill aus der SysInternals Suite (meiner Meinung nach ein nahezu obligatorisches Toolkit) kann mit einer Verknüpfung verknüpft und nach Belieben ausgelöst werden, um blockierte Prozesse zu bereinigen. Dies zu tun ist insofern hässlich, als es nichts zur Lösung des ursprünglichen Problems beiträgt, es jedoch ermöglicht, schnell und effizient weiterzumachen.

pskill -t arcmap.exe

Ich habe in letzter Zeit mehrmals in der Woche unsichtbare arcmap.exe-Prozesse erhalten, nicht so oft zuvor, aber dies geschieht seit einiger Zeit. Normalerweise verwende ich die gleichzeitige Lizenzierung. Es scheint häufiger zu passieren, wenn mehr als eine Arcmap-Sitzung aktiv ist. Wir verwenden Sophos Antivirus auf 64-Bit-Win7.

Matt Wilkie
quelle