Freigeben über


CComAutoThreadModule Class

Ab ATL 7.0 ist CComAutoThreadModule veraltet: finden Sie unter ATL-Modul-Klassen für weitere Details.

Wichtig

Diese Klasse und ihre Member können in Anwendungen nicht verwendet werden, die in der Windows Runtime ausführen.

template< 
class ThreadAllocator= CComSimpleThreadAllocator  
> 
class CComAutoThreadModule : 
public CComModule

Parameter

Mitglieder

Methoden

CreateInstance

Wählt einen Thread aus und erstellt dann ein Objekt im zugeordneten Apartment.

GetDefaultThreads

(Statisch) dynamisch berechnet die Anzahl der Threads für das Modul auf Grundlage der Anzahl der Prozessoren.

Init

Erstellt die Threads des Moduls.

Sperren

Inkrementiert die Sperrenanzahl auf dem Modul und im aktuellen Thread.

Entsperren Sie

Dekrementiert die Sperrenanzahl auf dem Modul und im aktuellen Thread.

Datenmember

Datenmember

dwThreadID

Enthält den Bezeichner des aktuellen Threads.

m_Allocator

Verwaltet Thread-Auswahl.

m_nThreads

Enthält die Anzahl der Threads im Modul.

m_pApartments

Verwaltet die Apartments des Moduls.

Hinweise

Hinweis

Diese Klasse ist veraltet, nachdem sie durch die CAtlAutoThreadModule und CAtlModule abgeleiteten Klassen sie ersetzt wurde.Die Informationen, die erfolgreich ist, sind für die Verwendung mit älteren Versionen von ATL.

CComAutoThreadModule wird von abgeleitet CComModule, um einen, ApartmentModell COM-Server mit Threadpool für EXE-Dateien und Windows-Dienste zu implementieren. CComAutoThreadModule verwendet CComApartment, um ein Apartment für jeden Thread im Modul zu verwalten.

Leiten Sie das Modul von CComAutoThreadModule, wenn Sie Objekte in mehreren Apartments erstellen möchten. Sie müssen das DECLARE_CLASSFACTORY_AUTO_THREAD-Makro in der Klassendefinition des Objekts auch einschließen, um CComClassFactoryAutoThread als die Klassenfactory anzugeben.

Standardmäßig berechnet der Anwendungs-Assistent ATL COM (der ATL-Projekt-Assistent in Visual Studio .NET.) das Modul von CComModule. Um CComAutoThreadModule zu verwenden, ändern Sie die Klassendefinition. Beispiel:

class CMyModule : 
public CComAutoThreadModule<CComSimpleThreadAllocator>
{
public:
   LONG Unlock()
   {
      LONG l = CComAutoThreadModule<CComSimpleThreadAllocator>::Unlock();
      if (l == 0)
         PostThreadMessage(dwThreadID, WM_QUIT, 0, 0);
      return l;
   }

   DWORD dwThreadID;
};

Vererbungshierarchie

_ATL_MODULE

CAtlModule

IAtlAutoThreadModule

CAtlModuleT

CAtlAutoThreadModuleT

CComModule

CComAutoThreadModule

Anforderungen

Header: atlbase.h

Siehe auch

Referenz

ATL-Modulklassen

Weitere Ressourcen

ATL Class Overview