Oprava: DLL, která používá třídy ATL CImage může způsobit zablokování v procesu

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

Na této stránce

Příznaky

DLL pomocí třídy CImage knihovna Active Template (ATL) může způsobit zablokování, pokud je uvolněna z procesu nebo vypne proces načítání.

Příčina

K tomuto problému dochází, protože třída CImage inicializuje a potom vypne GDI + pomocí statické vnořené třídy CInitGDIPlus. Tato třída inicializuje GDI + před libovolné CImage funkci, která vyžaduje GDI + je volána. GDI + je vypnut voláním GdiplusShutdown při destructed třídy CInitGDIPlus. CInitGDIPlus je destructed v DLL v kontextu DllMain statické třídě. V dokumentaci je uvedeno, že GdiplusShutdown nelze volat v DllMain.

Řešení

Informace o aktualizaci Service Pack

Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro Microsoft Visual Studio .NET. Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
837234Seznam opravených v Visual Studio .NET 2002 Service Pack 1

Informace o opravě hotfix

Další informace o této opravě hotfix naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
326459Porovnání COleDateTime nepodmíněných výrazů nebo vrací nesprávnou hodnotu

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech společnosti, které jsou uvedeny v části "Platí pro" v tomto článku. Tento problém byl poprvé opraven v Visual Studio .NET 2002 Service Pack 1.

Další informace

Kroky pro reprodukci tohoto chování

  1. Vytvořit projekt ATL DLL s názvem Control_Name htm a potom vložte ActiveX ovládacího prvku.
  2. Přidat člena CImage třídy ovládacího prvku ActiveX.
  3. Volání CImage::Load v konstruktoru třídy ovládacího prvku ActiveX.
  4. Zobrazení Stránka htm, který jste vytvořili pro ovládací prvek (Control_Name htm) v aplikaci Microsoft Internet Explorer.
  5. Ukončete aplikaci Internet Explorer. By měla vyskytnout některý z následujících podmínek:
    • Internet Explorer nelze spustit znovu.

      Nebo
    • IExplore.exe proces stále zobrazen ve Správci úloh.

Vlastnosti

ID článku: 322909 - Poslední aktualizace: 27. září 2005 - Revize: 7.1
Informace v tomto článku jsou určeny pro produkt:
  • The Microsoft Active Template Library (ATL) 7.0 na těchto platformách
    • Microsoft Visual Studio .NET 2002 Enterprise Architect
    • Microsoft Visual Studio .NET 2002 Enterprise Developer
    • Microsoft Visual Studio .NET 2002 Professional Edition
    • Microsoft Visual Studio .NET 2002 Academic Edition
Klíčová slova: 
kbmt kbhotfixserver kbqfe kbvs2002sp1sweep kbvs2002sp1fix kbbug kbfix KB322909 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:322909

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