Tenemos el problema de que a veces se produce un AccessViolationException
y se dibuja un cuadro de grupo simple con fondo blanco y una cruz roja en la parte superior. No podemos reproducir este error de manera confiable, solo ocurre de vez en cuando.AccessViolationException que se produce aleatoriamente en GDI +
No hacemos nada especial, solo mostramos una ventana principal con un menú, una barra de herramientas, el cuadro de grupo en el panel principal y algunos controles de hipervínculos dentro del cuadro de grupo.
Desde el seguimiento de la pila que parece que hay un error en Windows Forms o GDI +:
System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at System.Drawing.SafeNativeMethods.Gdip.GdipDrawLineI(HandleRef graphics, HandleRef pen, Int32 x1, Int32 y1, Int32 x2, Int32 y2)
at System.Drawing.Graphics.DrawLine(Pen pen, Int32 x1, Int32 y1, Int32 x2, Int32 y2)
at System.Windows.Forms.GroupBox.DrawGroupBox(PaintEventArgs e)
at System.Windows.Forms.GroupBox.OnPaint(PaintEventArgs e)
at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs)
at System.Windows.Forms.Control.WmPaint(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.GroupBox.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
No he visto esto antes, pero supongo que es de esperar. Usted dice que no puede reproducir de manera confiable. La solución rápida probablemente sea establecer la propiedad ['FlatStyle'] (http://msdn.microsoft.com/en-us/library/system.windows.forms.groupbox.flatstyle.aspx) de su control' GroupBox' para "Sistema". Parece que el error se está produciendo cuando WinForms intenta dibujar el groupbox internamente; si deja que el sistema lo dibuje, omitirá la implementación de WinForms y GDI + por completo. Eso al menos te dará una versión funcional para desplegar mientras descubres al verdadero culpable. Tal vez publicar un código para ayudarnos a salir? –
Lo primero que debo hacer es iniciar el Administrador de tareas y mostrar el recuento de objetos de usuario y objetos GDI para ver si la aplicación tiene alguna de esas. –
¿Está utilizando múltiples hilos en el código de llamada? – Beachwalker