2011-01-28 143 views
1

我必須加載一對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

回答

0

通過將OCX更改爲不使用全局變量已解決問題。感謝Hans Passant。

相關問題