バックグラウンド: バックグラウンド ワーカーを呼び出して高度な計算を行うフォームがあります。COM オブジェクトをオブジェクト配列に変換し、それをバックグラウンド ワーカーに渡します。バックグラウンド ワーカーでは、それらをアンパックして操作します。ILayer は com オブジェクトです。
コードは次のようになります。
private void run()
{
ESRI.Geodatabase.ILayer layer1 = getLayer();
ESRI.Geodatabase.ILayer layer2 = getLayer2();
object[] args = {(object)layer1, (object)layer2};
BackgroundWorker1.runAsynchronous(args);
}
private void backgroundworker_dowork(object sender, events e)
{
object[] args = (object[])e.Argument;
ESRI.Geodatabase.ILayer layer1 = (ILayer)args[0];
ESRI.Geodatabase.ILayer layer2 = (ILayer)args[1];
services.doIntensiveOperations(layer1, layer2);
}
私の質問は次のとおりです。バックグラウンド ワーカーから ILayer および/またはそのメンバーを繰り返し呼び出すと、パフォーマンス コストがかかりますか? ここでメモリ内で実際に何が起こっているのでしょうか?