Поделиться через


Класс CComClassFactoryAutoThread

Этот класс реализует интерфейс IClassFactory и позволяет создавать объекты в нескольких квартирах.

Важно!

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.

Синтаксис

class CComClassFactoryAutoThread
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Участники

Открытые методы

Имя Описание
CComClassFactoryAutoThread::CreateInstance Создает объект указанного CLSID.
CComClassFactoryAutoThread::LockServer Блокирует фабрику классов в памяти.

Замечания

CComClassFactoryAutoThread аналогичен CComClassFactory, но позволяет создавать объекты в нескольких квартирах. Чтобы воспользоваться этой поддержкой, наследуйте модуль EXE из CComAutoThreadModule.

Объекты ATL обычно получают фабрику классов, исходя из CComCoClass. Этот класс включает макрос DECLARE_CLASSFACTORY, который объявляет CComClassFactory в качестве фабрики классов по умолчанию. Чтобы использовать CComClassFactoryAutoThread, укажите макрос DECLARE_CLASSFACTORY_AUTO_THREAD в определении класса объекта. Например:

class ATL_NO_VTABLE CMyAutoClass :
   public CComObjectRootEx<CComMultiThreadModel>,
   public CComCoClass<CMyAutoClass, &CLSID_MyAutoClass>,
   public IMyAutoClass
{
public:
   DECLARE_CLASSFACTORY_AUTO_THREAD()

   // Remainder of class declaration omitted.

Иерархия наследования

CComObjectRootBase

CComObjectRootEx

IClassFactory

CComClassFactoryAutoThread

Требования

Заголовок: atlcom.h

CComClassFactoryAutoThread::CreateInstance

Создает объект указанного CLSID и извлекает указатель интерфейса на этот объект.

STDMETHODIMP CreateInstance(
    LPUNKNOWN pUnkOuter,
    REFIID riid,
    void** ppvObj);

Параметры

pUnkOuter
[in] Если объект создается в составе агрегата, pUnkOuter должен быть внешним неизвестным. В противном случае pUnkOuter должен иметь значение NULL.

riid
[in] IID запрошенного интерфейса. Если pUnkOuter не имеет значения NULL, необходимо выполнить IID_IUnknownriid.

ppvObj
[out] Указатель на указатель интерфейса, определяемый идентификатором riid. Если объект не поддерживает этот интерфейс, ppvObj имеет значение NULL.

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

Стандартное значение HRESULT.

Замечания

Если модуль является производным от CComAutoThreadModule, CreateInstance сначала выбирает поток для создания объекта в связанной квартире.

CComClassFactoryAutoThread::LockServer

Увеличивает и уменьшает количество блокировок модуля путем вызова _Module::Lock и _Module::Unlockсоответственно.

STDMETHODIMP LockServer(BOOL fLock);

Параметры

Стадо
[in] Если значение TRUE, число блокировок увеличивается; в противном случае число блокировок уменьшается.

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

Стандартное значение HRESULT.

Замечания

При использовании CComClassFactoryAutoThread_Module обычно относится к глобальному экземпляру CComAutoThreadModule.

Вызов LockServer позволяет клиенту удерживаться на фабрике классов, чтобы можно было быстро создать несколько объектов.

См. также

IClassFactory
Класс CComClassFactory2
Класс CComClassFactorySingleton
Класс CComObjectRootEx
CComGlobalsThreadModel
Общие сведения о классе