Update: DLL, die ATL CImage-Klasse wird verwendet, kann ein Deadlock in einem Prozess verursachen

Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.

322909
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Problembeschreibung
Eine DLL, die die ATL (Active Template Library) CImage -Klasse kann einen Deadlock verursachen, wenn entladen aus einem Prozess oder bei der Ladevorgang beendet ist.
Ursache
Dieses Problem, da die CImage -Klasse initialisiert und dann GDI + herunterfährt mithilfe der statischen geschachtelten Klasse CInitGDIPlus . Diese Klasse initialisiert GDI + vor jeder CImage -Funktion, die GDI + aufgerufen wird, erfordert. GDI + wird heruntergefahren durch GdiplusShutdown aufrufen, wenn die CInitGDIPlus -Klasse zerstört wird. CInitGDIPlus ist eine statische Klasse, die in einer DLL im Kontext von DllMain zerstört wird. Der Dokumentation angegeben, dass GdiplusShutdown in DllMain aufgerufen werden kann nicht.
Lösung

Informationen zu Service Packs

Installieren Sie das neueste Servicepack für Microsoft Visual Studio .NET, um dieses Problem zu beheben. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
837234Liste der in Visual Studio .NET 2002 Service Pack 1 behobenen Probleme

Hotfix-Informationen

Weitere Informationen zu diesem Hotfix finden Sie im folgenden Artikel der Microsoft Knowledge Base:
326459COleDateTime Vergleich Assertionen Wert bzw. gibt falschen zurück
Status
Microsoft hat bestätigt, dass dies ein Problem in den Microsoft-Produkten ist, die im Abschnitt "Gilt für" dieses Artikels aufgeführt sind. Dieses Problem wurde erstmals im Visual Studio .NET 2002 Service Pack 1.
Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Erstellen Sie ein ATL-DLL-Projekt mit dem Namen Control_Name htm und fügen Sie ein ActiveX-Steuerelement.
  2. Fügen Sie einen CImage -Member, der ActiveX-Steuerelementklasse.
  3. Rufen Sie CImage::Load in den Klassenkonstruktor ActiveX-Steuerelement.
  4. Zeigen Sie die .htm-Seite, die Sie für das Steuerelement erstellt haben (Control_Name htm) in Microsoft Internet Explorer.
  5. Beenden Sie Internet Explorer. Sie sollten die folgenden Bedingungen auftreten:
    • Internet Explorer kann nicht erneut gestartet werden.

      -oder-
    • Der Prozess IExplore.exe wird weiterhin im Task-Manager angezeigt.

Warnung: Dieser Artikel wurde automatisch übersetzt

Eigenschaften

Artikelnummer: 322909 – Letzte Überarbeitung: 01/10/2015 13:36:02 – Revision: 7.1

  • The Microsoft Active Template Library (ATL) 7.0
  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbvs2002sp1sweep kbvs2002sp1fix kbbug kbfix KB322909 KbMtde
Feedback