我有一个有状态的遗留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调用。
所以问题是:
Activator.CreateInstance
获取新的实例? (就像单独的.exe调用一样)