Форум Кумертау-City.ru: Com Server`a В Delphi - Форум Кумертау-City.ru

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Com Server`a В Delphi Оценка: -----

#1 Пользователь офлайн   /\/\ 

  • Местный
  • PipPip
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 85
  • Регистрация: 11 апреля 03
  • Репутация: 0

Отправлено 18 апреля 2003 - 23:55

Кто нибудь создавал в Dephi COM сервера?????????????????

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

Шо делать?????????
  • +
  • 0

#2 NT Man

  • Группа: Гости

Отправлено 19 апреля 2003 - 00:24

Сделай чтобы твой COM обьект порождал новый процесс...

#3 Пользователь офлайн   /\/\ 

  • Местный
  • PipPip
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 85
  • Регистрация: 11 апреля 03
  • Репутация: 0

Отправлено 19 апреля 2003 - 23:22

А зачем создавать новый процесс, когда уже создан главный процесс этого ком сервера. Мой ком сервер не внутрипроцессорный а внещний.
Необходимо просто увеличить количество ссылок на данный сервер при создании этого сервера с помощью метода AddRef. Но почемуто этот метод не работает или я его не туда пишу.
  • +
  • 0

#4 Пользователь офлайн   Reactor 

  • Участник
  • PipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 246
  • Регистрация: 10 апреля 03
  • Репутация: 0

Отправлено 20 апреля 2003 - 01:07

/\/\ (Воскресенье, 20 Апрель 2003, 0:22) писал:

А зачем создавать новый процесс, когда уже создан главный процесс этого ком сервера. Мой ком сервер не внутрипроцессорный а внещний.
Необходимо просто увеличить количество ссылок на данный сервер при создании этого сервера с помощью метода AddRef. Но почемуто этот метод не работает или я его не туда пишу.

Для определения возможности выгрузки сервера из памяти система вызывает в нем функцию DllCanUnloadNow, если вернешь S_OK то значит выгрузка разрешена, иначе никто тебя не тронет. Короче, её смотри. AddRef отвечает немного за другое.
  • +
  • 0

#5 Пользователь офлайн   /\/\ 

  • Местный
  • PipPip
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 85
  • Регистрация: 11 апреля 03
  • Репутация: 0

Отправлено 20 апреля 2003 - 18:32

А за что отвечает AddRef ?
  • +
  • 0

#6 Пользователь офлайн   Reactor 

  • Участник
  • PipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 246
  • Регистрация: 10 апреля 03
  • Репутация: 0

Отправлено 20 апреля 2003 - 23:13

/\/\ (Воскресенье, 20 Апрель 2003, 19:32) писал:

А за что отвечает AddRef ?

AddRef увеличивает количество ссылок на интерфейс объекта, т.е. при каждом вызове QueryInterface или в некоторых случаях при непосредственном вызове AddRef(клонирование указателя на интерфейс или желание продлить существование объекта дольше существования оригинального указателя).
Функция DllCanUnloadNow возвращает результат на основе проверки глобального счетчика объектов, который увеличивается в конструкторе класса(уменьшается соответственно в деструкторе), т.е. при создании объекта.
По идее, пока не будут освобождены все ссылки на интерфейс объекта объект не должен быть уничтожен и соответственно значение счетчика объектов не позволит DllCanUnloadNow разрешить выгрузку. Но, явное уничтожение объекта, а не освобождение указателей через Release и тем самым автоматическое уничтожение объекта при достижении количества ссылок нулю, как раз и приведет к ситуации когда ссылки существуют, а счетчик объектов в нуле(уменьшение в деструкторе).
Короче, ты мыслишь в правильном направлении(касательно AddRef), просто проверь: может где-то объект уничтожается явно, а не через Release.

P.S. Прошу прощения за сумбур...
  • +
  • 0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых