Condividi tramite


Classe CComClassFactoryAutoThread

Questa classe implementa l'interfaccia IClassFactory e consente la creazione di oggetti in più appartamenti.

Importante

Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.

Sintassi

class CComClassFactoryAutoThread
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Membri

Metodi pubblici

Nome Descrizione
CComClassFactoryAutoThread::CreateInstance Crea un oggetto del CLSID specificato.
CComClassFactoryAutoThread::LockServer Blocca la class factory in memoria.

Osservazioni:

CComClassFactoryAutoThread è simile a CComClassFactory, ma consente la creazione di oggetti in più appartamenti. Per sfruttare questo supporto, derivare il modulo EXE da CComAutoThreadModule.

Gli oggetti ATL acquisiscono normalmente una class factory derivando da CComCoClass. Questa classe include la macro DECLARE_CLASSFACTORY, che dichiara CComClassFactory come class factory predefinita. Per usare CComClassFactoryAutoThread, specificare la macro DECLARE_CLASSFACTORY_AUTO_THREAD nella definizione della classe dell'oggetto. Ad esempio:

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.

Gerarchia di ereditarietà

CComObjectRootBase

Ccomobjectrootex

IClassFactory

CComClassFactoryAutoThread

Requisiti

Intestazione: atlcom.h

CComClassFactoryAutoThread::CreateInstance

Crea un oggetto del CLSID specificato e recupera un puntatore di interfaccia a questo oggetto.

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

Parametri

pUnkOuter
[in] Se l'oggetto viene creato come parte di un'aggregazione, pUnkOuter deve essere l'elemento sconosciuto esterno. In caso contrario, pUnkOuter deve essere NULL.

riid
[in] IID dell'interfaccia richiesta. Se pUnkOuter è diverso da NULL, riid deve essere IID_IUnknown.

ppvObj
[out] Puntatore al puntatore all'interfaccia identificato da riid. Se l'oggetto non supporta questa interfaccia, ppvObj è impostato su NULL.

Valore restituito

Valore HRESULT standard.

Osservazioni:

Se il modulo deriva da CComAutoThreadModule, CreateInstance prima di tutto seleziona un thread per creare l'oggetto nell'apartment associato.

CComClassFactoryAutoThread::LockServer

Incrementa e decrementa il conteggio dei blocchi del modulo chiamando _Module::Lock rispettivamente e _Module::Unlock.

STDMETHODIMP LockServer(BOOL fLock);

Parametri

Gregge
[in] Se TRUE, il conteggio dei blocchi viene incrementato; in caso contrario, il conteggio dei blocchi viene decrementato.

Valore restituito

Valore HRESULT standard.

Osservazioni:

Quando si usa CComClassFactoryAutoThread, _Module in genere fa riferimento all'istanza globale di CComAutoThreadModule.

La chiamata LockServer consente a un client di mantenere una class factory in modo che più oggetti possano essere creati rapidamente.

Vedi anche

IClassFactory
Classe CComClassFactory2
Classe CComClassFactorySingleton
Classe CComObjectRootEx
CComGlobalsThreadModel
Cenni preliminari sulla classe