FIX: DLL che utilizza la classe CImage ATL può causare un blocco critico (deadlock) in un processo

Traduzione articoli Traduzione articoli
Identificativo articolo: 322909 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Una DLL che utilizza la classe ATL (Active Template Library) CImage può causare un blocco critico (deadlock) viene scaricata da un processo o arresta il processo di caricamento.

Cause

Questo problema si verifica perché la classe CImage consente di inizializzare e quindi arresta GDI + utilizzando la classe nidificata statica CInitGDIPlus . Questa classe inizializza GDI + prima di qualsiasi funzione di CImage che richiede di che GDI + viene chiamato. GDI + viene chiuso chiamando GdiplusShutdown quando viene eliminata la classe CInitGDIPlus . CInitGDIPlus è una classe statica che viene eliminata in una DLL nel contesto di DllMain . La documentazione per segnalare che non è possibile chiamare GdiplusShutdown in DllMain .

Risoluzione

Informazioni di Service pack

Per risolvere il problema, ottenere il service pack più recente per Microsoft Visual Studio. NET. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
837234Elenco dei bug corretti in Visual Studio .NET 2002 Service Pack 1

Informazioni sull'hotfix

Per ulteriori informazioni su questo aggiornamento rapido (hotfix), fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
326459Confronto di COleDateTime asserzioni o restituisce il valore non corretto

Status

Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a" di questo articolo. Questo problema è stato innanzitutto corretto in Visual Studio .NET 2002 Service Pack 1.

Informazioni

Procedura per riprodurre il problema.

  1. Creare un progetto DLL ATL denominato Control_Name htm e quindi inserire un ActiveX controllo.
  2. Aggiungere un membro di CImage alla classe del controllo ActiveX.
  3. Chiamare CImage::Load nel costruttore della classe di controllo ActiveX.
  4. Visualizzare la pagina htm creato per il controllo (Control_Name .htm) in Microsoft Internet Explorer.
  5. Chiudere Internet Explorer. È necessario si verifichi uno delle seguenti condizioni:
    • Non è nuovamente possibile avviare Internet Explorer.

      - oppure -
    • Il processo IExplore.exe verrà ancora visualizzato in Task Manager.

Proprietà

Identificativo articolo: 322909 - Ultima modifica: martedì 27 settembre 2005 - Revisione: 7.1
Le informazioni in questo articolo si applicano a:
  • The Microsoft Active Template Library (ATL) 7.0 alle seguenti piattaforme
    • 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
Chiavi: 
kbmt kbhotfixserver kbqfe kbvs2002sp1sweep kbvs2002sp1fix kbbug kbfix KB322909 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 322909
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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