背景:我有一个表单,它调用后台工作人员进行一些密集的计算。我将 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 和/或其成员是否有性能成本?这里的内存中实际发生了什么?