Procesy ArcMap.exe pozostają otwarte po zamknięciu ArcMap? [Zamknięte]

23

Uświadomiłem sobie, że dzieje się to kilka miesięcy temu, kiedy nie byłem w stanie zmienić struktury tabeli w instancji ArcMap po zamknięciu innej instancji. Kiedy na przykład usuwam lub dodam niektóre pola do klasy elementów w ArcMap, zapisuję i zamykam dokument oraz otwieram ArcCatalog i próbuję usunąć tę konkretną klasę elementów, pojawia się błąd Niepowodzenie usuwania: Nie udało się usunąć wybranych obiektów. Zwykle dzieje się tak, gdy instancja ArcMap zawierająca warstwy, które próbuję usunąć, jest otwarta, więc obejście polega na uruchomieniu Menedżera zadań Windows i zabiciu procesów ArcMap.exe, które z jakiegoś powodu są nadal otwarte.

Czy ktoś jeszcze ma ten problem?

Teraz działa SP3 i problem nie został rozwiązany.

wprowadź opis zdjęcia tutaj


Korzystam z bardzo podobnej konfiguracji na porównywalnym komputerze i nie mam tego problemu.

Jakub Sisak GeoGraphics
źródło
4
TAK! Proszę zobaczyć mój post na forum na forach ESRI. Próbuję go odtworzyć (wydaje się losowy ...), aby otworzyć bilet za pomocą ESRI.
SaultDon,
Czy masz załadowane jakieś rozszerzenia innych firm? Zastanawiam się, czy wyjątek w IExtension.Shutdown mógłby to wyjaśnić.
Kirk Kuykendall
@kirk Nie mam i nigdy nie instalowałem żadnych na tej instalacji v10. To nawet nowa instalacja systemu Windows7. Podobnie jak w przypadku ciebie, to trwało jeszcze przed SP1.
SaultDon
2
Prowadzisz prawie 100 procesów, może to być naprawdę wszystko, ale najbardziej podejrzewałbym skanery antywirusowe, oprogramowanie do tworzenia kopii zapasowych i usługi indeksowania wyszukiwania.
blah238
@Kirk - brak rozszerzeń w tej konkretnej konfiguracji, ale sprawdzę dwukrotnie, kiedy zabiorę się do pracy. Mam kilka własnych narzędzi dodawania. Mam podobną konfigurację na innym komputerze z systemem Windows 7 z tymi samymi dodatkami i bez problemów.
Jakub Sisak GeoGraphics

Odpowiedzi:

18

To nie twoja wina i niewiele możesz z tym zrobić. Jeśli jednak ciekawi Cię powód, dzieje się tak, że istnieje odwołanie cykliczne COM (najprawdopodobniej coś nasłuchującego jakiegoś źródła zdarzeń - takiego jak Edytor), a gdy aplikacja próbuje wyjść, nie może, ponieważ niektóre obiekty zachowują siebie nawzajem żywych. Może to pochodzić z zainstalowanego rozszerzenia lub nawet z samego kodu ESRI. To zdarzało się cały czas i może objawiać się tylko pod pewnymi warunkami, jak niektóre polecenia widoczne na pasku narzędzi.

Ze starego samouczka ArcObjects na temat koncepcji COM :

Gdy aplikacja kończy działanie, zwalnia odniesienie do polecenia. Jeśli polecenie służy również jako ujście zdarzenia, aplikacja przechowuje inne odwołanie do polecenia, którego nie można zwolnić, dopóki polecenie nie odłączy się od źródła. Ponieważ polecenie nie wie o punkcie, w którym może się rozłączyć innym niż własny destruktor, powoduje to cykliczne odwołanie, w którym aplikacja nie może wyjść bez zniszczenia polecenia, a destruktor polecenia nigdy nie zostaje wywołany, ponieważ aplikacja zawiera odniesienie do polecenia . Powoduje to zawieszenie się aplikacji przy wyjściu.

Jeśli jesteś jeszcze bardziej ciekawy, usuń (lub zrób kopię zapasową) plik Normal.mxt, który usunie wszystkie dostosowania i sprawdzi, czy problem nadal występuje.

Ragi Yaser Burhum
źródło
3
+1 dobre wyjaśnienie. Zastanawiam się, czy zamknąć wszystkie paski poleceń oprócz jednego, a następnie zapisać i zamknąć i spróbować odtworzyć problem. Nie sądzę, aby ICommand.OnCreate był wywoływany, dopóki pasek narzędzi nie będzie widoczny. Jeśli stopniowo włączasz paski narzędzi i powtarzasz testy, być może możesz zawęzić listę podejrzanych poleceń.
Kirk Kuykendall
Dobre wytłumaczenie. Dzięki. @Kirk - Mam narzędzie innej firmy, o którym zapomniałem (ArcBruTile), usunę je. Mój dodatek rzeczywiście słucha pewnych zdarzeń, więc zastanawiam się, czy źródłem problemu może być mój pasek narzędzi. Dziwne jest to, że mam te same narzędzia na innym komputerze, a także ten sam zestaw domyślnego paska narzędzi i nie mam tego problemu. Spróbuję zacząć od nowej Normal.mxt, to dobra sugestia.
Jakub Sisak GeoGraphics
Czasami też, gdy akt bycia po prostu widocznym może niekoniecznie wystarczać, aby wywołać cykliczne odniesienie - może zaistnieć pewne zdarzenie, aby ten stan się objawił. Na przykład polecenie może być widoczne i wszystko jest w porządku, a dandy czeka na zdarzenie „StartEditing”. Gdy to się uruchomi, postanawia zacząć pobierać odniesienia do innych rzeczy - i tam ustawia inne odniesienia, które powodują warunek kołowy. Był to klasyczny problem z rozszerzeniami VB, a jeszcze bardziej z poleceniami .NET z powodu niedeterministycznego zbierania śmieci
Ragi Yaser Burhum
2

Dziękujemy @Kirk i @Ragi za rozwiązanie tego problemu! Oto, co zrobiłem podczas monitorowania procesów Menedżera zadań:

  1. Utworzono kopię zapasową i usunięto Normal.mxt
  2. Rozpoczęto nowy dokument ArcMap (ArcMap otwarty w konfiguracji domyślnej)
  3. Zamknięta ArcMap (Proces zamknięty zgodnie z oczekiwaniami)
  4. Dodano Toobary: Analityk 3D, Zaawansowana edycja, Narzędzia ramki danych, Rysuj, Edytuj wierzchołki, Edytor, Georeferencje, Etykietowanie, Układ, Przyciąganie
  5. Ułożone paski narzędzi
  6. Zamknięta ArcMap (Proces zamknięty zgodnie z oczekiwaniami)
  7. Uruchomiono nowy dokument ArcMap
  8. Dodałem własny niestandardowy pasek narzędzi z dodatkami
  9. Zamknięta ArcMap (Proces zamknięty zgodnie z oczekiwaniami)
  10. Rozpoczął istniejący dokument ArcMap
  11. Używałem niestandardowego uruchamiania i zatrzymywania edycji na moim pasku narzędzi, a także kilku niestandardowych narzędzi
  12. Zamknięta ArcMap (Proces zamknięty zgodnie z oczekiwaniami)

Ja również usunąłem i usunąłem ArcBruTile

Procesy ArcMap są teraz zamykane zgodnie z oczekiwaniami

Jakub Sisak GeoGraphics
źródło
2
odezwał się za wcześnie. Problem powrócił.
Jakub Sisak GeoGraphics
Niestety, obsługa ESRI kopiuje i wkleja powyższą odpowiedź jako rozwiązanie, gdy wydaje się, że nie działa: /
MaryBeth
@Jakub Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? Tworzę dodatek i ostatnio zauważyłem, że po wyjściu z niego uruchomiono wiele procesów ArcMap.
Barbarossa,
Wydaje się, że konsensus polega na tym, że procesy są otwierane i nieprawidłowo zamykane przez dodatki / rozszerzenia stron trzecich. Tworzę własne dodatki i być może właśnie przejrzałem cały mój kod, upewniając się, że wszystkie obiekty zostały zwolnione lub, co bardziej prawdopodobne, problem został naprawiony u źródła przez ESRI, ponieważ nie występuje już w 10.3 i wierzę, że już zniknął w 10.2 Jeśli nadal tak się dzieje, odinstaluj lub usuń WSZYSTKIE dodatki innych firm i sprawdź, czy problem nadal występuje. Jeśli nie, obracaj się, dodając jeden po drugim, aby zlokalizować winowajcę. Mam nadzieję że to pomoże.
Jakub Sisak GeoGraphics
2

Nie próbując przywrócić tego postu z martwych, ale pracując z obsługą ESRI w tej sprawie z serwerem Citrix (użytkownicy ulegają awarii lub wylogowują się, arcgiscachemanager.exe nie zamyka się 20-30 minut później lub dłużej, jeśli w ogóle, użytkownicy nie mogą wrócić do ArcMap, a następnie muszą polegać na 2 administratorach serwera, którzy są dostępni do zalogowania się na serwerze i ręcznego zwolnienia go), ESRI kopiuje i wkleja rozwiązanie z tej strony i nie działa. Przynajmniej nie podczas pracy w środowisku Citrix.

W przypadku Citrix stwierdziliśmy, że utworzenie dwóch kluczy rejestru (jeden do zabicia zawieszonego procesu, drugi do przywrócenia ustawień do ich pierwotnego stanu) „naprawił” problem.

W przypadku firm innych niż Citrix zastanawialiśmy się nad stworzeniem skryptu, aby zabić ten proces, ale ponieważ nie jesteśmy w Citrix, jesteśmy już na serwerze, zdecydowaliśmy, że nie jest to konieczne.

Mam nadzieję że to pomoże.

------- skopiowane dane z eskalowanego biletu pomocy technicznej -------- Citrix ma ustawienia kluczy rejestru, które pomogą zarządzać aplikacjami, które spawnują wtórne procesy w tle. Masz wiele symptomów, które powinny uczynić to rozwiązanie możliwym do zaakceptowania. Przejrzyj następujące artykuły wiedzy Citrix:

Pełne wylogowania z opublikowanej aplikacji renderuje sesję w stanie aktywnym: http://support.citrix.com/article/CTX891671

Aktywne sesje po wylogowaniu użytkownika w środowisku XenApp po uaktualnieniu z systemu Windows Server 2003 do systemu Windows Server 2008: http://support.citrix.com/article/CTX134956

XenApp 6.5 Konsola AppCenter wyświetla status aplikacji Aplikacja nie działa: http://support.citrix.com/article/CTX133328

W tych artykułach omówiono, w jaki sposób opublikowane aplikacje mogą spowodować, że sesja nie zostanie zamknięta lub użytkownik nie zostanie poprawnie wylogowany. W takich przypadkach sesje musiały zostać zresetowane / zakończone przez administratora lub przez zakończenie procesu z serwera, który był nadal uruchomiony. W Citrix dzieje się to, że publikujesz główną aplikację, w twoim przypadku ArcMap. Tylko ten plik exe jest zamykany podczas zamykania aplikacji (lub w przypadku awarii). W rezultacie wszelkie pliki exe powiązane z aplikacją, które zostały odrodzone podczas otwierania aplikacji, nie są w pełni zamknięte w Citrix, co powoduje ten stan. Kiedy więc ArcGISCacheMgr.exe zajmuje dużo czasu lub aplikacja ulega awarii, użytkownicy końcowi nie mogą rozpocząć nowej sesji.

W artykułach omówiono sposób dodawania tych wtórnych procesów do klucza rejestru w celu ich automatycznego zamknięcia po zamknięciu głównej aplikacji. Inną opcją, którą możesz zbadać, jest skrypt wylogowania, aby sprawdzić procesy i zakończyć je, jeśli istnieją.

MaryBeth
źródło
2

Utwórz plik .bat, wklej go i zapisz na pulpicie.

 taskkill /IM ArcGisCacheMgr.exe /f
 taskkill /IM ArcGisConnection.exe /f
 "C:\Program Files (x86)\ArcGIS\Desktop10.1\bin\ArcMap.exe"
Shane
źródło
4
Wyjaśnienie, co robią te polecenia (i ich opcje), pomoże niewtajemniczonym zrozumieć twoje rozwiązanie.
whuber
1

PsKill z SysInternals Suite (moim zdaniem cholernie blisko obowiązkowego zestawu narzędzi) można połączyć ze skrótem i uruchamiać do woli, aby oczyścić zawieszone procesy. Jest to brzydkie, ponieważ nie rozwiązuje oryginalnego problemu, ale pozwala szybko i skutecznie działać.

pskill -t arcmap.exe

Ostatnio dostaję niewidoczne procesy arcmap.exe kilka razy w tygodniu, nie tak często wcześniej, ale dzieje się to już od jakiegoś czasu. Zwykle korzystam z licencjonowania równoległego. Wydaje się, że zdarza się to częściej, gdy mam więcej niż jedną sesję Arcmap. Używamy antywirusa Sophos na 64-bitowym Win7.

matowe wilkie
źródło