Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 创建同一OCX的多个实例_.net_Instance_Ocx - Fatal编程技术网

.net 创建同一OCX的多个实例

.net 创建同一OCX的多个实例,.net,instance,ocx,.net,Instance,Ocx,我必须加载几个OCX库才能访问遗留代码。 我正在使用Activator.CreateInstance创建实例: var type = Type.GetTypeFromProgID(ProgId); var comObject = Activator.CreateInstance(type); 不幸的是,Activator.CreateInstance似乎每个ProgId只创建一个实例,但是我需要多个具有不同配置的实例 示例:假设我使用的是OCX,它允许设置一个值: var instance1

我必须加载几个OCX库才能访问遗留代码。 我正在使用Activator.CreateInstance创建实例:

var type = Type.GetTypeFromProgID(ProgId);
var comObject = Activator.CreateInstance(type);
不幸的是,Activator.CreateInstance似乎每个ProgId只创建一个实例,但是我需要多个具有不同配置的实例

示例:假设我使用的是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控件,而不必仅获得一个实例的引用。

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

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

可能是全局变量的bug,也可能是故意的。通常是这样。你没有旋钮来调整这个,与OCX供应商合作。谢谢你的建议。OCX是我们公司写的,我认为全球变量可能是问题所在。我将尝试验证这个概念。可能是一个bug全局变量,可能是故意的。通常是这样。你没有旋钮来调整这个,与OCX供应商合作。谢谢你的建议。OCX是我们公司写的,我认为全球变量可能是问题所在。我将尝试验证这个概念。