0

よくある話: C# を使用して ArcMap 拡張機能を開発しています。ほとんどの問題は、ArcToolbox のあらゆる種類のジオプロセシング ツールを使用して解決できます。一般的により望ましいものは次のとおりです。

  1. ツールごとに新しいジオプロセッサ オブジェクトを作成しますか?
  2. 1 つのジオプロセッサ オブジェクトを再利用していますか?

1) が推奨される場合、1 つのツールが実行された後に com オブジェクトを解放する必要がありますか? GC.Collect() の呼び出しについてはどうですか?

2) が推奨される場合、シングルトン パターンを使用するなど、一度インスタンス化して何度も再利用するのは良い方法ですか?

私の個人的な経験では、2 番目の方法を使用すると、コードのデバッグ中に重大なメモリ アクセス違反が発生します。

4

1 に答える 1

1

おそらく、それぞれに新しいオブジェクトを作成することを選択します。複数のスレッドを使用する場合、同期の必要性を避けるためにとにかく必要です。

はい、各 com オブジェクトをできるだけ早く解放する必要がありますが、GC.Collect() を呼び出さないでください。

ここを参照してください: http://msdn.microsoft.com/en-us/library/ff647812.aspx

于 2010-06-28T15:08:18.513 に答える