

| стрелялки |
| спорт |
| драки |
| стратегии |
| гонки |
| логические |
| азартные |
| аркады |
| эротические |
| фильмы онлайн |
| Интерфейс ICIassFactory |
|
Физически фабрика класса - это разновидность COM-объекта, поддерживающего интерфейс IClassFactory. Описание этого ключевого интерфейса мы найдем в недрах модуля ActiveX; в нем определены два метода. Метод Cre-ateInstance() используется для создания экземпляра COM-объекта: function CreateInstance(const Outer: IUnknown; const id: TIID; out obj): HResult; stdcall; Здесь константа Outer ссылается на интерфейс IUnknown. После успешного вызова метода в выходной параметр obj будет помещен указатель на интерфейс, определенный идентификатором id. Второй метод LockServer() блокирует COM-объект, не позволяя системе выгрузить его из памяти, даже когда он не используется ни одним из клиентских приложений. function LockServer(Lock: Boolean): HResult; stdcall; Для включения блокировки в параметр Lock должно быть передано значение true. Таким образом мы принудительно увеличиваем на единицу счетчик блокировок и соответственно не допускаем разрушения объекта. Такое поведение полезно в ситуации, когда мы знаем, что хотя в данный момент объект и не нужен, но вскоре вновь появится необходимость в его услугах. Сохранив экземпляр объекта в памяти, мы избавим систему от необходимости разрушения и повторного создания объекта и тем самым сократим временные затраты на рестарт. Для уменьшения счетчика на единицу в параметр Lock передается false. Если при этом счетчик использования объекта примет нулевое значение, объект самостоятельно прекратит свое существование. Логическим развитием интерфейса IClassFactory считается его прямой наследник IClassFactory2. Этот интерфейс позволяет управлять созданием экземпляров COM-объектов, для работы которых необходим лицензионный ключ. |
