Возможно ли сделать COM объект который после закрытия оставлял после себя поток
выполняющий действие.
Т.е. необходимо реализовать следующий алгоритм:
procedure proc;
var
myCom : TmyCom;
begin
CoInitialize();
// 1. Создание COM объекта
myCom := TmyCom.Create;
// 2. При вызове следующей функции должен начаться асинхронный процесс
myCom.DoSomething;
myCom.Free;
CoUninitialize();
end;
В общеи после закрытия(удаления) myCom COM сервер закрывается и поток никогда не выполняется.
Что посоветуете? Может вообще вызываеть exe файл с определенными параметрами?
pi>Что посоветуете? Может вообще вызываеть exe файл с определенными параметрами?
Если твой com-объект лежит в отдельном exe-сервере, то, конечно, можно поломать в нем механизм проверки count-ов на объекты так, чтобы exe-сервер учитывал запущенные потоки так же как и поднятые com-объекты.
Если это сервис, то вообще ничего делать не надо. Поток будет крутиться, пока сервис не остановят.
Если com-объект лежит в dll и поднимается в dllhost-е, вот тут сложнее. Я правда не особо пытался бодаться с dllhost-ом, но эта зараза сама как-то считает reference-ы на поднятые объекты, и "обмануть" ее довольно сложно (но думаю, что можно). В крайнем случае, можно написать свою dllhost.
Если твой com-объект поднимается inproc, то все уже
сказаноАвтор: Denwer
Дата: 28.05.04
Здравствуйте, rus blood, Вы писали:
pi>>Что посоветуете? Может вообще вызываеть exe файл с определенными параметрами?
RB>Если твой com-объект лежит в отдельном exe-сервере, то, конечно, можно поломать в нем механизм проверки count-ов на объекты так, чтобы exe-сервер учитывал запущенные потоки так же как и поднятые com-объекты.
RB>Если это сервис, то вообще ничего делать не надо. Поток будет крутиться, пока сервис не остановят.
RB>Если com-объект лежит в dll и поднимается в dllhost-е, вот тут сложнее. Я правда не особо пытался бодаться с dllhost-ом, но эта зараза сама как-то считает reference-ы на поднятые объекты, и "обмануть" ее довольно сложно (но думаю, что можно). В крайнем случае, можно написать свою dllhost.
RB>Если твой com-объект поднимается inproc, то все уже сказаноАвтор: Denwer
Дата: 28.05.04
COM сервер в exe. В общем будем ломать счетчики.
Спасибо.
Здравствуйте, pi, Вы писали:
pi>Возможно ли сделать COM объект который после закрытия оставлял после себя поток
pi>выполняющий действие.
Можно сделать COM-объект, который будет указывать чему-то запустить поток.
Сделай как сервис и запускай его — при сбрасывании COM-объектов до нуля — exe все равно не завершит работу (и поток соответственно тоже)
... << RSDN@Home 1.1.2 stable >>