并行执行和.exe应用程序之类的免费COM对象

时间:2016-02-21 14:23:24

标签: c# com

我有一个有状态的遗留COM对象。我需要正确设置状态和调用操作。

它工作正常,直到我尝试在同一个对象上顺序执行此逻辑(由于此组件的编写方式而出现错误)。所以每次迭代都需要 fresh COM对象。

我得到这样的COM对象:

Activator.CreateInstance(Type.GetTypeFromProgID("MyComType"));

并释放这样的对象:

public void close()
{
    createdComObjects.Reverse();
    foreach(object item in createdComObjects)
    {
        Marshal.FinalReleaseComObject(item); //also tried ReleaseComObject
    }
}

但是这不起作用......我每次都得到相同的COM实例和遗留错误,因为没有新的状态。

还有一个细节 - 当我使用一个业务逻辑迭代运行.exe时,一切正常,我甚至可以在不同状态错误的情况下并行.exe调用。

所以问题是:

  1. 如何在每次通话时使用Activator.CreateInstance获取新的实例? (就像单独的.exe调用一样)
  2. 如何在下次通话时完全释放实例以获取新实例? (就像退出.exe一样)

0 个答案:

没有答案