Метод IObjectControl::D eactivate (comsvcs.h)

Позволяет объекту COM+ выполнять необходимую очистку перед его очисткой или уничтожением.

Этот метод вызывается средой выполнения COM+ при отключении объекта. Не вызывайте методы для объектов в одном и том же действии из этого метода.

Синтаксис

void Deactivate();

Возвращаемое значение

None

Remarks

Среда выполнения COM+ вызывает метод Deactivate всякий раз, когда объект, поддерживающий интерфейс IObjectControl , деактивирован. Объект деактивируется, когда он возвращается из метода, в котором метод SetComplete или SetAbort, когда транзакция, в которой он выполняется, зафиксирована или прервана, или когда последний клиент, удерживающий ссылку на объект, освобождает свою ссылку.

Если компонент поддерживает перезапуск (возвращает значение TRUE из метода CanBePooled ), необходимо использовать метод Деактивировать , чтобы сбросить состояние объекта до состояния, в котором метод Activate ожидает его найти. Вы также можете использовать метод Деактивировать , чтобы освободить контекст объекта или выполнить другую очистку для конкретного контекста. Даже если объект поддерживает перезапуск, может быть полезно освободить некоторые повторно используемые ресурсы в методе Деактивации . Например, ODBC предоставляет собственные пулы подключений. Эффективнее объединить подключение к базе данных в общий пул соединений, где его могут использовать другие объекты, чем сохранить привязку к конкретному объекту в пуле объектов.

COM+ явно запрещает вызов объекта, который предоставляет IObjectControl после возврата метода деактивации (когда он находится в деструкторе). Такой вызов приведет к ошибке RPC_E_DISCONNECTED. Например, если объект передал ссылку на себя, а затем вызывает обратно в объект после возврата деактивации , возникает ошибка отключения.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header comsvcs.h

См. также раздел

IObjectControl