Jak implementovat sdružených podprocesů typu apartment modelu COM server ATL

Překlady článku Překlady článku
ID článku: 244495 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Microsoft Active Template Library (ATL) umožňuje definovat s každý objekt vytvořený, systémem svůj vlastní podproces fondu podprocesů STA v ATL mimo proces serveru. Kroky v části "Další informace" Tento článek ukazuje, jak to provést.

Další informace

Následující kroky jsou potřebné k vytvoření objektů z fondu podprocesů:
  1. Odvození třídy CExeModule nebo CServiceModule z:
    CComAutoThreadModule<>
    					
    CExeModule : public CComAutoThreadModule<>
    					
  2. V každé třídy ATL spouštěné v podprocesu fondu STA deklarovat DECLARE_CLASSFACTORY_AUTO_THREAD()
  3. Deklarovat DECLARE_NOT_AGGREGATABLE() každé třídy ATL spuštěné na fondu podprocesů STA
    DECLARE_NOT_AGGREGATABLE(CMyPooledObject)
    					
  4. Změnit modul volat metodu CExeModule::Unlock() nebo CServiceModule::Unlock():
    CComAutoThreadModule<>::Unlock()
    						
    LONG CExeModule::Unlock()
    {
       LONG l = CComAutoThreadModule<>::Unlock();
       if (l == 0)
       {
         bActivity = true;
         SetEvent(hEventShutdown); // tell monitor that we transitioned to zero
       }
       return l;
    }
    						
Pokud se právě provádí pro službu, bude nutné provést jeden krok. Změnit z následující kód:
inline void CServiceModule::Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, UINT nServiceNameID, const GUID* plibid)
{
   CComModule::Init(p, h, plibid);
				
k:
inline void CServiceModule::Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, UINT nServiceNameID, const GUID* plibid)
{
   CComAutoThreadModule<>::Init(p, h, plibid);
				
ve výchozím nastavení vytvoří ATL fondu čtyř podprocesů na procesor. Můžete změnit v _Module.Init() volání ve volání funkce tWinMain() zadáním počtu podprocesů v nepovinné tam parametr. Ve výchozím nastavení používá CComAutoThreadModule CComSimpleThreadAllocator jako Alokátor podprocesu. CComSimpleThreadAllocator používá jednoduchý kruhové schéma k vytváření objektů fondu podprocesů.

Odkazy

Pro další informace o vyhledávání DECLARE_CLASS_FACTORY_AUTO_THREAD() a CComAutoThreadModule a Microsoft Developer Network (MSDN).

Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
202128Oprava: Serveru ATL EXE na základě CComAutoThreadModule může přestat reagovat na registraci

Vlastnosti

ID článku: 244495 - Poslední aktualizace: 26. května 2005 - Revize: 3.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft ActiveX Template Library 3.0 na těchto platformách
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
Klíčová slova: 
kbmt kbarchitecture kbhowto kblocalsvr kbservice kbthread KB244495 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:244495

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com