Возможно ли сделать COM объект который после закрытия оставл
От: pi  
Дата: 27.05.04 21:15
Оценка:
Возможно ли сделать COM объект который после закрытия оставлял после себя поток
выполняющий действие.

Т.е. необходимо реализовать следующий алгоритм:

procedure proc;
var
myCom : TmyCom;
begin
CoInitialize();

// 1. Создание COM объекта
myCom := TmyCom.Create;
// 2. При вызове следующей функции должен начаться асинхронный процесс
myCom.DoSomething;
myCom.Free;

CoUninitialize();
end;

В общеи после закрытия(удаления) myCom COM сервер закрывается и поток никогда не выполняется.

Что посоветуете? Может вообще вызываеть exe файл с определенными параметрами?
Re: Возможно ли сделать COM объект который после закрытия ос
От: Denwer Россия  
Дата: 28.05.04 07:38
Оценка:
Здравствуйте, pi, Вы писали:

pi>Возможно ли сделать COM объект который после закрытия оставлял после себя поток

pi>выполняющий действие.

pi>Т.е. необходимо реализовать следующий алгоритм:


pi>procedure proc;

pi>var
pi> myCom : TmyCom;
pi>begin
pi> CoInitialize();

pi> // 1. Создание COM объекта

pi> myCom := TmyCom.Create;
pi> // 2. При вызове следующей функции должен начаться асинхронный процесс
pi> myCom.DoSomething;
pi> myCom.Free;

pi> CoUninitialize();

pi>end;

pi>В общеи после закрытия(удаления) myCom COM сервер закрывается и поток никогда не выполняется.


pi>Что посоветуете? Может вообще вызываеть exe файл с определенными параметрами?


Это как так понимать, т.е. ты закрыл приложение но оно еще должно работать? Так что ли?
Re: Возможно ли сделать COM объект который после закрытия ос
От: rus blood Россия  
Дата: 28.05.04 08:29
Оценка: 7 (1)
pi>Что посоветуете? Может вообще вызываеть exe файл с определенными параметрами?

Если твой com-объект лежит в отдельном exe-сервере, то, конечно, можно поломать в нем механизм проверки count-ов на объекты так, чтобы exe-сервер учитывал запущенные потоки так же как и поднятые com-объекты.

Если это сервис, то вообще ничего делать не надо. Поток будет крутиться, пока сервис не остановят.

Если com-объект лежит в dll и поднимается в dllhost-е, вот тут сложнее. Я правда не особо пытался бодаться с dllhost-ом, но эта зараза сама как-то считает reference-ы на поднятые объекты, и "обмануть" ее довольно сложно (но думаю, что можно). В крайнем случае, можно написать свою dllhost.

Если твой com-объект поднимается inproc, то все уже сказано
Автор: Denwer
Дата: 28.05.04
Имею скафандр — готов путешествовать!
Re[2]: Возможно ли сделать COM объект который после закрытия
От: pi  
Дата: 28.05.04 14:37
Оценка:
Здравствуйте, 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. В общем будем ломать счетчики.
Спасибо.
Re: Возможно ли сделать COM объект который после закрытия ос
От: KGP http://kornilow.newmail.ru
Дата: 01.06.04 13:02
Оценка:
Здравствуйте, pi, Вы писали:

pi>Возможно ли сделать COM объект который после закрытия оставлял после себя поток

pi>выполняющий действие.
Можно сделать COM-объект, который будет указывать чему-то запустить поток.
Сделай как сервис и запускай его — при сбрасывании COM-объектов до нуля — exe все равно не завершит работу (и поток соответственно тоже)
... << RSDN@Home 1.1.2 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.