Classe CComClassFactoryAutoThread
Essa classe implementa a interface IClassFactory e permite que os objetos sejam criados em vários apartments.
Importante
Essa classe e seus membros não podem ser usados em aplicativos que são executados no Windows Runtime.
Sintaxe
class CComClassFactoryAutoThread
: public IClassFactory,
public CComObjectRootEx<CComGlobalsThreadModel>
Membros
Métodos públicos
Nome | Descrição |
---|---|
CComClassFactoryAutoThread::CreateInstance | Cria um objeto da CLSID especificada. |
CComClassFactoryAutoThread::LockServer | Bloqueia a fábrica de classe na memória. |
Comentários
CComClassFactoryAutoThread
é semelhante a CComClassFactory, mas permite que os objetos sejam criados em vários apartments. Para aproveitar esse suporte, derive seu módulo EXE de CComAutoThreadModule.
Os objetos ATL normalmente adquirem uma fábrica de classes derivando de CComCoClass. Essa classe inclui a macro DECLARE_CLASSFACTORY, que declara CComClassFactory como a fábrica de classes padrão. Para usar CComClassFactoryAutoThread
, especifique a DECLARE_CLASSFACTORY_AUTO_THREAD na definição de classe do objeto. Por exemplo:
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.
Hierarquia de herança
CComObjectRootBase
IClassFactory
CComClassFactoryAutoThread
Requisitos
Header: atlcom.h
CComClassFactoryAutoThread::CreateInstance
Cria um objeto da CLSID especificada e recupera um ponteiro de interface para esse objeto.
STDMETHODIMP CreateInstance(
LPUNKNOWN pUnkOuter,
REFIID riid,
void** ppvObj);
Parâmetros
Punkouter
[in] Se o objeto estiver sendo criado como parte de uma agregação, pUnkOuter deverá ser o desconhecido externo. Caso contrário, pUnkOuter deve ser NULL.
riid
[in] O IID da interface solicitada. Se pUnkOuter for não NULL, riid deverá ser IID_IUnknown
.
Ppvobj
[out] Um ponteiro para o ponteiro de interface identificado por riid. Se o objeto não dá suporte a essa interface, ppvObj é definido como NULL.
Valor Retornado
Um valor HRESULT padrão.
Comentários
Se o módulo derivar de CComAutoThreadModule, CreateInstance
primeiro selecione um thread para criar o objeto no apartment associado.
CComClassFactoryAutoThread::LockServer
Incrementa e diminui a contagem de bloqueios do módulo chamando _Module::Lock
e _Module::Unlock
, respectivamente.
STDMETHODIMP LockServer(BOOL fLock);
Parâmetros
Rebanho
[in] Se TRUE, a contagem de bloqueios será incrementada; caso contrário, a contagem de bloqueios será decrementada.
Valor Retornado
Um valor HRESULT padrão.
Comentários
Ao usar CComClassFactoryAutoThread
, _Module
normalmente se refere à instância global de CComAutoThreadModule.
Chamar LockServer
permite que um cliente mantenha uma fábrica de classes para que vários objetos possam ser criados rapidamente.
Consulte também
IClassFactory
Classe CComClassFactory2
Classe CComClassFactorySing ltda
Classe CComObjectRootEx
Ccomglobalsthreadmodel
Visão geral da classe