ArcMapを閉じた後、ArcMap.exeプロセスは開いたままですか?[閉まっている]


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マシンでも同じアドオンを使用して同様のセットアップを行っていますが、問題はありません。
ヤクブSisak GeoGraphics

回答:


18

あなたのせいではなく、あなたがそれに対してできることはあまりない。ただし、理由に興味がある場合は、COM循環参照(エディターなどの何らかのイベントソースをリッスンしている可能性が最も高い)があり、アプリケーションが終了しようとすると、一部のオブジェクトが保持されているため、お互いが生きています。これは、インストールした拡張機能からでも、ESRIコード自体からでも可能です。これは常に発生し、特定のコマンドがツールバーに表示されるなど、特定の条件下でのみ現れる場合があります。

COMの概念に関する古いArcObjectsチュートリアルから

アプリケーションが終了すると、コマンドへの参照を解放します。コマンドがイベントシンクとしても機能する場合、アプリケーションはコマンドへの別の参照を保持します。この参照は、コマンドがソースから切断されるまで解放できません。コマンドは自身のデストラクタ以外の接続を切断できるポイントを知らないため、アプリケーションがコマンドを破壊せずに終了できず、コマンドのデストラクタがコマンドへの参照を保持しているため、コマンドのデストラクタが呼び出されない循環参照が発生します。これにより、アプリケーションが終了時にハングします。

さらに興味がある場合は、Normal.mxtを削除(またはバックアップ)します。これにより、すべてのカスタマイズが消去され、この問題が続くかどうかが確認されます。


3
+1良い説明。1つを除くすべてのコマンドバーを閉じて、保存して終了し、問題を再現しようとすると疑問に思います。ICommand.OnCreateは、ツールバーが表示されるまで呼び出されないと思います。ツールバーを徐々にオンにしてテストを繰り返すと、疑わしいコマンドのリストを絞り込むことができます。
カーククイケンドール

良い説明。ありがとう。@Kirk-忘れていたサードパーティのツールがあります(ArcBruTile)削除します。私のアドインは確かにいくつかのイベントリスニングを行うので、ツールバーが問題の原因になるのではないかと考えています。奇妙なことは、他のマシンに同じツールがあり、デフォルトのツールバーの同じセットがロードされており、この問題がないことです。私は新しいNormal.mxtから始めようとしますが、これは良い提案です。
ヤクブSisak GeoGraphics

また、単に可視であるという行為が循環参照を引き起こすのに必ずしも十分ではない場合もあります-その状態が現れるために何らかのイベントが発生する必要があるかもしれません。たとえば、コマンドを表示でき、すべてが正常であり、「StartEditing」イベントの発生を待機しています。それがトリガーされると、他のものへの参照の取得を開始することを決定します-そしてそこで、循環状態を引き起こす他の参照を設定します。これは、VBの拡張子を持つと、さらに.NETコマンドので、非決定論的ガベージコレクションのクラシックな問題だった
Ragi Yaser Burhum

2

この問題を解決してくれてありがとう@Kirkと@Ragi!タスクマネージャープロセスの監視中に行ったことは次のとおりです。

  1. Normal.mxtのバックアップと削除
  2. 新しいArcMapドキュメントを開始しました(ArcMapはデフォルトの構成で開かれています)
  3. 閉じたArcMap(プロセスは期待どおりに閉じられました)
  4. 追加されたToobars:3Dアナリスト、高度な編集、データフレームツール、描画、頂点の編集、エディター、ジオリファレンス、ラベリング、レイアウト、スナップ
  5. 配置されたツールバー
  6. 閉じたArcMap(プロセスは期待どおりに閉じられました)
  7. 新しいArcMapドキュメントを開始しました
  8. アドイン付きの独自のカスタムツールバーを追加しました
  9. 閉じたArcMap(プロセスは期待どおりに閉じられました)
  10. 既存のArcMapドキュメントを開始しました
  11. カスタムの開始および停止編集をツールバーといくつかのカスタムツールで使用した
  12. 閉じたArcMap(プロセスは期待どおりに閉じられました)

ArcBruTileも削除および削除しました

ArcMapプロセスが期待どおりに終了するようになりました


2
あまりにも早く話しました。問題が戻ってきました。
ヤクブSisak GeoGraphics

残念ながら、ESRIサポートは上記の答えをコピーして、解決策として貼り付けていましたが、機能していないようです:/
MaryBeth

@Jakubこの問題の解決策を見つけましたか?アドインを作成していますが、最近、終了後に複数のArcMapプロセスが実行されていることに気付きました。
バルバロッサ

サードパーティのアドイン/拡張機能によってプロセスが開かれ、適切に閉じられないというのがコンセンサスのようです。独自のアドインを作成し、すべてのオブジェクトがリリースされていることを確認するためにすべてのコードを実行したか、10.3では発生しなくなったため、ESRIによってソースで問題が修正された可能性が高い10.2。これが引き続き発生する場合は、すべてのサードパーティアドインをアンインストールまたは削除し、問題がまだ存在するかどうかを確認します。回り続けない場合は、犯人を見つけるために1つずつ追加します。お役に立てれば。
ヤクブSisak GeoGraphics

2

この投稿を死者から取り戻そうとはしていませんが、Citrixサーバーでこの問題のESRIサポートを使用している間(ユーザーがクラッシュまたはログアウトした場合、arcgiscachemanager.exeは20〜30分以上終了しません。ユーザーはArcMapに戻ることができず、2人のサーバー管理者に頼ってサーバーにログインして手動でリリースできるようにする必要があります)、ESRIはこのページからソリューションをコピーして貼り付けているため、機能しません。少なくともCitrix環境で作業しているときはそうではありません。

Citrixの場合、2つのレジストリキー(ハングプロセスを強制終了するため、1つは設定を元の状態に戻すためのレジストリキー)を作成すると、問題が「修正」されることがわかりました。

Citrix以外の場合、プロセスを強制終了するためのスクリプトを作成するというアイデアをいじりましたが、Citrixを使用していないときは既にサーバーにいるので、それは必要ないと判断しました。

お役に立てれば。

-------エスカレーションされたサポートチケットからコピーされたデータ-------- Citrixには、バックグラウンドでセカンダリプロセスを生成するアプリケーションの管理に役立つレジストリキー設定があります。このソリューションをもっともらしいセットアップにする多くの症状があります。以下のCitrix Knowledge Articleをご覧ください。

公開アプリケーションからの正常なログオフにより、セッションがアクティブ状態になります:http : //support.citrix.com/article/CTX891671

Windows Server 2003からWindows Server 2008にアップグレードすると、XenApp環境でユーザーがログオフした後のアクティブセッション:http//support.citrix.com/article/CTX134956

XenApp 6.5 AppCenter Consoleに、実行されていないアプリケーションステータスアプリケーションが表示される:http//support.citrix.com/article/CTX133328

これらの記事では、公開されたアプリケーションによってセッションが閉じられなかったり、ユーザーが適切にログオフされなかったりする方法について説明しています。これらの場合、管理者によって、またはまだ実行中のサーバーからプロセスを終了することによって、セッションをリセット/終了する必要がありました。Citrixで行われるのは、メインアプリケーション(場合によってはArcMap)を公開することです。アプリケーションを終了するとき(またはクラッシュした場合)、そのexeのみが閉じられます。その結果、アプリケーションが開かれたときに生成されたアプリケーションに関連付けられたexeは、Citrixで完全に閉じられず、この状態になります。そのため、ArcGISCacheMgr.exeの実行に時間がかかるか、アプリケーションがクラッシュすると、エンドユーザーは新しいセッションを開始できなくなります。

これらの記事では、これらのセカンダリプロセスをレジストリキーに追加して、メインアプリケーションを閉じると自動的に閉じる方法について説明します。探索できるもう1つのオプションは、プロセスを確認し、存在する場合は終了するログオフスクリプトです。


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

SysInternals SuitePsKill(私の意見では必須のツールキットに近い)は、ショートカットにリンクし、ハングしたプロセスをクリーンアップするために自由に起動できます。これを行うと、元の問題を解決するために何も実行されないという点で見苦しくなりますが、迅速かつ効率的に実行できます。

pskill -t arcmap.exe

私は最近、目に見えないarcmap.exeプロセスを週に数回取得していますが、以前はそれほど頻繁ではありませんでしたが、しばらくは発生しています。私は通常、コンカレントライセンスを使用しています。複数のArcmapセッションがアクティブになっている場合に頻繁に発生するようです。64ビットWin7上でソフォスのウイルス対策ソフトウェアを使用しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.