2011-01-28 8 views
1

Мне нужно загрузить несколько библиотек OCX для доступа к устаревшему коду. Я создаю экземпляр с помощью Activator.CreateInstance:Создайте несколько экземпляров того же OCX

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

К сожалению Activator.CreateInstance, кажется, создает только один экземпляр в ProgId, однако мне нужно несколько экземпляров с различными конфигурациями.

Пример: Предположу, что я использую Wich 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. –

+0

Спасибо за ваш совет. OCX написана нашей компанией. Я думаю, что глобальные переменные могут быть проблемой. Я попытаюсь проверить это понятие. – Zebi

ответ

0

Проблема была решена путем изменения OCX, чтобы не использовать глобальные переменные. Спасибо Ханс Пассант.

Смежные вопросы