Кто нибудь создавал в Dephi COM сервера?????????????????
Может подскажите как сделать такую хрень. Зарегистрировал COM сервер и в какой либо другой программе создаю его делаю с ним всякие вещи и необходимо чтобы он после того как я закрою клиента остался в рабочем положении на экране, а он сабака закрывается.
Шо делать?????????
Страница 1 из 1
Com Server`a В Delphi
#3
Отправлено 19 April 2003 - 23:22
А зачем создавать новый процесс, когда уже создан главный процесс этого ком сервера. Мой ком сервер не внутрипроцессорный а внещний.
Необходимо просто увеличить количество ссылок на данный сервер при создании этого сервера с помощью метода AddRef. Но почемуто этот метод не работает или я его не туда пишу.
Необходимо просто увеличить количество ссылок на данный сервер при создании этого сервера с помощью метода AddRef. Но почемуто этот метод не работает или я его не туда пишу.
#4
Отправлено 20 April 2003 - 01:07
/\/\ (Воскресенье, 20 Апрель 2003, 0:22) писал:
А зачем создавать новый процесс, когда уже создан главный процесс этого ком сервера. Мой ком сервер не внутрипроцессорный а внещний.
Необходимо просто увеличить количество ссылок на данный сервер при создании этого сервера с помощью метода AddRef. Но почемуто этот метод не работает или я его не туда пишу.
Необходимо просто увеличить количество ссылок на данный сервер при создании этого сервера с помощью метода AddRef. Но почемуто этот метод не работает или я его не туда пишу.
Для определения возможности выгрузки сервера из памяти система вызывает в нем функцию DllCanUnloadNow, если вернешь S_OK то значит выгрузка разрешена, иначе никто тебя не тронет. Короче, её смотри. AddRef отвечает немного за другое.
#6
Отправлено 20 April 2003 - 23:13
/\/\ (Воскресенье, 20 Апрель 2003, 19:32) писал:
А за что отвечает AddRef ?
AddRef увеличивает количество ссылок на интерфейс объекта, т.е. при каждом вызове QueryInterface или в некоторых случаях при непосредственном вызове AddRef(клонирование указателя на интерфейс или желание продлить существование объекта дольше существования оригинального указателя).
Функция DllCanUnloadNow возвращает результат на основе проверки глобального счетчика объектов, который увеличивается в конструкторе класса(уменьшается соответственно в деструкторе), т.е. при создании объекта.
По идее, пока не будут освобождены все ссылки на интерфейс объекта объект не должен быть уничтожен и соответственно значение счетчика объектов не позволит DllCanUnloadNow разрешить выгрузку. Но, явное уничтожение объекта, а не освобождение указателей через Release и тем самым автоматическое уничтожение объекта при достижении количества ссылок нулю, как раз и приведет к ситуации когда ссылки существуют, а счетчик объектов в нуле(уменьшение в деструкторе).
Короче, ты мыслишь в правильном направлении(касательно AddRef), просто проверь: может где-то объект уничтожается явно, а не через Release.
P.S. Прошу прощения за сумбур...
Страница 1 из 1