Pregunta

Actualmente estoy investigando un problema con un componente de terceros (DevExpress) en mi aplicación. Mi problema es bastante similar a este artículo DevExpress KB . Me sale la misma excepción con más menos el mismo stacktrace. Así que utilicé .NET Reflector para averiguar qué puede ser nulo en este escenario, y el único objeto que es un candidato para ser nulo es Graphics. Esto se crea con Graphics.FromHwnd (IntPtr.Zero). Debido a que no tengo un amplio conocimiento sobre GDI, me gustaría saber si alguien puede decirme posibles escenarios cuando esto puede volver nulo ...

Traté de reproducirlo en un escenario en el que Windows está fuera de los identificadores de GDI, pero luego obtengo un " de identificadores " - excepción al menos una vez, que no es el caso en el problema que estoy investigando

tia, Martin

¿Fue útil?

Solución

Por lo que recuerdo, un HWND de 0 (efectivamente IntPtr.Zero) es un controlador para el escritorio de la sesión de usuario actual. Se puede usar para medir varias métricas del sistema y debe ser un valor válido para Graphics.FromHwnd.

Sin embargo, GDI + está tan lleno de errores y la integración de .NET con él es tan inestable que es muy posible que no haya nada de malo en su código o DevExpress aparte de que solo usa GDI +.

Otros consejos

En primer lugar, está utilizando la estructura IntPtr y la está inicializando a cero. Luego está pasando este identificador a la clase Graphics. A menos que tenga una ventana con un handle == 0 , un valor nulo es exactamente lo que esperaría.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top