Процеси ArcMap.exe залишаються відкритими після закриття ArcMap? [зачинено]


23

Я зрозумів, що це відбувається місяці тому, коли мені не вдалося змінити структуру таблиці в екземплярі ArcMap після закриття іншого примірника. Наприклад, коли я видаляю або додаю деякі поля до класу функцій в ArcMap, зберігаю і закриваю документ і відкриваю ArcCatalog і намагаюся видалити саме цей клас функцій, я отримую помилку Видалення: Не вдалося видалити вибраний об’єкт (и). Зазвичай це відбувається, коли відкривається екземпляр ArcMap, який містить шари, які я намагаюся видалити, щоб вирішити проблему, щоб запустити диспетчер завдань Windows і вбити процеси ArcMap.exe, які чомусь досі відкриваються.

Хтось ще має цю проблему?

Зараз запущений SP3, і проблема не вирішена.

введіть тут опис зображення


У мене дуже подібні налаштування на порівняльній машині, і у мене немає цього питання.


4
ТАК! Будь ласка, дивіться мій пост на форумах ESRI. Я намагаюсь відтворити це (здається випадковим ...), щоб отримати квиток, відкритий за допомогою ESRI.
SaultDon

Чи завантажені розширення сторонніх розробників? Цікаво, чи може це пояснити виняток у IExtension.Shutdown.
Кірк Куйкендалл

@kirk У мене немає жодного і ніколи не встановлював жодної цієї установки v10. Це навіть нова установка windows7. Подібно до вас, це зберігається ще з початку SP1.
SaultDon

2
Ви виконуєте майже 100 процесів, це може бути все що завгодно, але я б найбільш підозріло ставився до вірусних сканерів, резервного програмного забезпечення та пошукових індексів.
blah238

@Kirk - розширень у цій програмі немає, але я повторно перевіряю, коли прийду на роботу. У мене є кілька власних інструментів для додатків. У мене є аналогічне налаштування на іншій машині Windows 7 з тими ж надбудовами і ніяких проблем там немає.
Jakub Sisak GeoGraphics

Відповіді:


18

Ви не з вашої вини і не так багато можете зробити з цим. Однак якщо вам цікаво причина, що трапляється, це те, що є циркулярна посилання на COM (найімовірніше, на щось слухає якесь джерело події - наприклад, редактор), і коли програми намагаються вийти з нього не можуть, оскільки деякі об'єкти зберігаються один одного живі. Це може бути з встановленого вами розширення або навіть із самого коду ESRI. Це траплялося постійно і може проявлятись лише за певних умов, як-от певні команди, що видно на панелі інструментів.

Зі старого підручника ArcObjects щодо концепцій COM :

Коли програма закривається, вона випускає посилання, яке вона містить команду. Якщо команда також виконує функцію раковини події, програма містить ще одне посилання на команду, яке не можна випустити, поки команда не відключиться від джерела. Оскільки команда не знає точки, в якій вона може відключити, крім власного деструктора, це викликає циркулярну посилання, згідно з якою програма не може вийти, не знищуючи команду, і деструктор команди ніколи не викликається, оскільки програма містить посилання на команду . Це призводить до того, що програма зависає при виході.

Якщо ви ще цікавіші, видаліть (або резервну копію) свого Normal.mxt, який видалить усі налаштування та побачить, чи ця проблема не зберігається.


3
+1 хороше пояснення. Мене змушує замислитись, чи закрити всі панелі команд, крім однієї, а потім зберегти та вийти та спробувати відтворити проблему. Я не думаю, що ICommand.OnCreate викликає, поки панель інструментів не буде видно. Якщо ви поступово включаєте панелі інструментів і повторюєте тести, можливо, ви могли б звузити список підозрілих команд.
Кірк Куйкендалл

Гарне пояснення. Спасибі. @Kirk - У мене є сторонній інструмент, про який я забув (ArcBruTile), це я вилучу. Моє доповнення дійсно виконує деякі прослуховування подій, тому мені цікаво, що моя панель інструментів може стати джерелом проблеми. Дивна річ у тому, що я маю ті ж інструменти на своїй іншій машині, як і той самий набір панелей інструментів за замовчуванням, і у мене немає цієї проблеми. Я спробую почати зі свіжого Normal.mxt, це гарна пропозиція.
Jakub Sisak GeoGraphics

Крім того, іноді, коли діяння просто видимого може бути неодмінно достатньо, щоб викликати циркулярну посилання - може знадобитися якась подія, щоб ця умова проявилася. Наприклад, команда може бути видно, і все в порядку і денді чекає, коли станеться подія "StartEditing". Як тільки це спрацьовує, він вирішує почати захоплювати посилання на інші речі - і там він встановлює свої інші посилання, які викликають циркулярний стан. Це було класичною проблемою з розширеннями VB, а ще більше - з командами .NET через недетермінований збір сміття
Рагі Ясер Бурхум

2

Дякую @Kirk та @Ragi за вирішення цієї проблеми! Ось що я зробив під час моніторингу процесів диспетчера завдань:

  1. Резервне копіювання та видалення Normal.mxt
  2. Почався новий документ ArcMap (ArcMap відкритий у конфігурації за замовчуванням)
  3. Закритий ArcMap (процес закритий, як очікувалося)
  4. Додано Toobars: 3D Analyst, Advanced Editing, Data Frame Tools, Draw, Edit Vertices, Editor, Georeferenceing, Labeling, Layout, Snapping
  5. Впорядковані панелі інструментів
  6. Закритий ArcMap (процес закритий, як очікувалося)
  7. Почався новий документ ArcMap
  8. Додана власна спеціальна панель інструментів із надбудовами
  9. Закритий ArcMap (процес закритий, як очікувалося)
  10. Розпочав існуючий документ ArcMap
  11. Використовувався спеціальний режим запуску та зупинки редагування на моїй панелі інструментів, а також кілька спеціальних інструментів
  12. Закритий ArcMap (процес закритий, як очікувалося)

Я також видалив і видалив ArcBruTile

Процеси ArcMap зараз закриті, як очікувалося


2
заговорили занадто рано. Проблема повертається.
Якуб Сисак GeoGraphics

На жаль, підтримка ESRI копіює та вставляє вищезазначену відповідь як рішення, коли, здається, це не працює: /
MaryBeth

@Jakub Ви коли-небудь знаходили рішення цього питання? Я створюю додаток і нещодавно помітив декілька процесів ArcMap, які працюють після виходу.
Barbarossa

Здається, що єдиний консенсус полягає в тому, що процеси відкриваються і не належним чином закриваються сторонніми добавками / розширеннями. Я будую свої власні надбудови, і, можливо, я просто пройшов увесь свій код, щоб забезпечити звільнення всіх об'єктів або, що, швидше за все, проблема була виправлена ​​в джерелі ESRI, оскільки це вже не відбувається в 10.3, і я вважаю, що вже зникло в 10.2. Якщо це все-таки відбувається, видаліть та видаліть ВСІ сторонні додатки та перевірте, чи проблема все ще існує. Якщо не продовжуйте обертатись, додайте по черзі, щоб знайти винуватця. Сподіваюся, це допомагає.
Jakub Sisak GeoGraphics

2

Не намагаюся повернути цю публікацію з мертвих, але працюючи з підтримкою ESRI над цим питанням із сервером Citrix (користувачі виходять з ладу або виходять із системи, arcgiscachemanager.exe не закривається через 20-30 хвилин або більше, якщо взагалі немає, Користувачі не можуть повернутися до ArcMap, і тоді їм доведеться покластися на 2 адміністратора сервера, щоб вони були доступними для входу в сервер і вручну звільнили їх), ESRI копіює та вставляє рішення з цієї сторінки, і це не працює. Принаймні, не під час роботи в середовищі Citrix.

Для Citrix ми виявили, що створення двох ключів реєстру (одного для вбивства вивішеного процесу, одного для відведення налаштувань до початкового стану) "виправило" проблему.

Для не-Citrix ми розмовляли з ідеєю просто створити скрипт, щоб знищити процес, але оскільки, коли ми не в Citrix, ми вже на сервері, ми вирішили, що це не потрібно.

Сподіваюся, це допомагає.

------- скопіював дані з ескалаційного квитка підтримки -------- У Citrix є налаштування ключа реєстру, які допоможуть керувати програмами, які породжують вторинні процеси у фоновому режимі. У вас є багато симптомів, які повинні зробити це рішення правдоподібним настроєм. Перегляньте наступні статті знань Citrix:

Витончений вихід із опублікованої програми надає сесію в активному стані: http://support.citrix.com/article/CTX891671

Активні сеанси після виходу з користувача в середовищі XenApp, коли оновлено з Windows Server 2003 до Windows Server 2008: http://support.citrix.com/article/CTX134956

XenApp 6.5 Консоль AppCenter відображає статус додатка, який не працює: http://support.citrix.com/article/CTX133328

У цих статтях йдеться про те, як опубліковані програми можуть призвести до закриття сеансу або неправильного виходу користувача з сеансу. У цих випадках сеанси потрібно було скинути / закрити адміністратором або припинити процес із сервера, який все ще працює. Що відбувається в Citrix, це те, що ви публікуєте основну програму, у вашому випадку ArcMap. Лише цей EXE закритий під час виходу із програми (або якщо вона виходить з ладу). Як результат, будь-який exe, пов'язаний із додатком, який був породжений під час відкриття програми, не буде повністю закритий у Citrix, що призводить до цього стану. Тож, коли ArcGISCacheMgr.exe потребує тривалого часу на виконання або програма виходить з ладу, ваші кінцеві користувачі не можуть розпочати новий сеанс.

У статтях обговорюється, як можна додати ці вторинні процеси до ключа реєстру, щоб автоматично закрити їх після закриття основної програми. Інший варіант, який ви можете вивчити, - це сценарій виходу з системи, щоб перевірити процеси та припинити їх існування.


2

Створіть .bat файл і вставте його та збережіть на робочому столі.

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

4
Пояснення того, що роблять ці команди (та їх параметри), допоможе непосвяченим зрозуміти ваше рішення.
whuber

1

PsKill з пакету SysInternals (на мою думку, чорт біля обов'язкового набору інструментів) може бути пов'язаний із ярликом та запускатися за бажанням, щоб очистити вивішені процеси. Це некрасиво в тому, що воно нічого не дозволяє вирішити первісну проблему, але дозволяє швидко і ефективно працювати.

pskill -t arcmap.exe

Останнім часом я кілька разів на тиждень отримую невидимі процеси arcmap.exe, не так часто раніше, але це відбувається вже деякий час. Я зазвичай використовую одночасне ліцензування. Здається, це трапляється частіше, коли в мене більше одного сеансу Arcmap. Ми використовуємо антивірус Sophos на 64-бітній Win7.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.