Activator.CreateInstance мой экземпляр? - PullRequest
1 голос
/ 23 сентября 2010

У меня есть кусок кода, чтобы открыть экземпляр COM-объекта и выполнить различные задачи.Моя проблема в том, что если приложение, которое я открываю с помощью COM, уже запущено, я снова использую этот экземпляр.Я всегда хотел бы иметь новый экземпляр и работать с этим и, наконец, закрыть.В любом случае, чтобы сделать это?

Type t = System.Type.GetTypeFromProgID("QlikTech.QlikView");
QlikView.Application app = (QlikView.Application)Activator.CreateInstance(t);
app.OpenDocEx("c:\\test.qvw",1,false,null,null,null,true);
String script = app.ActiveDocument().GetScript();
StreamWriter outfile = new StreamWriter("c:\\test.qvw.txt");
outfile.Write(script);
outfile.Close();
app.Quit();

1 Ответ

3 голосов
/ 23 сентября 2010

Это свойство самого COM-сервера.Значение, которое оно передает для аргумента flags в вызове CoRegisterClassObject ().Похоже, что он передает REGCLS_MULTIPLEUSE, что не редкость, поскольку может быть дорого запускать новый процесс для каждого отдельного клиента.

Клиент не может изменить это поведение.Вам понадобится помощь поставщика, возможно, есть файл конфигурации.

...