Domanda

Attualmente sto esaminando un problema con un componente di terze parti (DevExpress) nella mia applicazione. Il mio problema è abbastanza simile a questo articolo DevExpress KB . Ottengo la stessa eccezione con più meno lo stesso stacktrace. Quindi ho usato .NET Reflector per scoprire cosa potrebbe essere nullo in questo scenario e l'unico oggetto che è un candidato ad essere nullo è Graphics. Questo viene creato con Graphics.FromHwnd (IntPtr.Zero). Poiché non ho una vasta conoscenza di GDI, vorrei sapere se qualcuno può dirmi possibili scenari quando questo può restituire null ...

Ho provato a riprodurlo in uno scenario in cui Windows è fuori dagli handle GDI, ma poi sto ottenendo un "fuori dagli handle". - eccezione almeno una volta, che non è il caso del problema su cui sto indagando

tia, Martin

È stato utile?

Soluzione

Da quello che ricordo, un HWND di 0 (in effetti IntPtr.Zero) è un handle per il desktop della sessione dell'utente corrente. Può essere utilizzato per misurare varie metriche del sistema e dovrebbe essere un valore valido per Graphics.FromHwnd.

Tuttavia, GDI + è così pieno di bug e l'integrazione .NET con esso è così instabile che è molto probabile che non ci sia nulla di sbagliato nel codice o in DevExpress oltre a utilizzare GDI +.

Altri suggerimenti

Prima di tutto, stai usando la struttura IntPtr e la stai inizializzando a zero. Quindi si passa questo handle alla classe Graphics. A meno che tu non abbia una finestra con un handle == 0 , un valore null è esattamente quello che mi aspetterei.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top