创建多个相同的OCX实例

问题描述:

我必须加载一对OCX库来访问遗留代码。 我创建使用Activator.CreateInstance实例:创建多个相同的OCX实例

var type = Type.GetTypeFromProgID(ProgId); 
var comObject = Activator.CreateInstance(type); 

不幸的是Activator.CreateInstance似乎每个进程id只能创建一个实例,但是我需要使用不同配置多个实例。

例子:假设我使用的是OCX至极允许设置一个值:

var instance1 = Create(progId); 
Set(instance1, "key", "1"); 
var value1 = Get(instance1, "key"); // returns 1 

var instance2 = Create(progId); 
Set(instance2, "key", "2"); 
var value2 = Get(instance2, "key"); // returns 2 

var value3 = Get(instance1, "key"); // returns 2 

我需要一种方法来实例化一个OCX(相同PROGID)控制多次没有得到手的引用只是一个实例。

+1

可能是一个错误(全局变量),可能是故意的。它通常是。你没有旋钮来调整它,与OCX厂商合作。 – 2011-01-28 14:22:37

通过将OCX更改为不使用全局变量已解决问题。感谢Hans Passant。