2011-05-31 14 views
10

Algunos historia de fondo:Windows Forms ComboBox causando System.AccessViolationException intermitente

He buscado tanto stackoverflow y Google para averiguar el origen de esta excepción particular.

Tenemos una aplicación de Windows Forms (C#, .NET 2.0) que ocasionalmente lanzará System.AccessViolationException (seguimiento de la pila a continuación). La excepción ha ocurrido tanto en Windows XP (SP3) como en Windows Vista (SP2). De la entrada del usuario, hemos establecido que la excepción se produce cuando se cambia el índice seleccionado de un ComboBox.

ComboBox es un componente estándar de Windows Forms y está contenido en un control personalizado que hereda System.Windows.Forms.UserControl.

Mi consulta principal es:

dónde viene esta excepción viene?

  • ¿Es de algún error interno en .NET Framework?
  • ¿Podría ser el código que se envía en el evento SelectedIndexChanged que lo causa?

temas relacionados en StackOverflow:

Seguimiento de la pila:

Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 
Type: System.AccessViolationException 

    at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam) 
    at System.Windows.Forms.NativeWindow.DefWndProc(Message& m) 
    at System.Windows.Forms.Control.DefWndProc(Message& m) 
    at System.Windows.Forms.Control.WmCommand(Message& m) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ComboBox.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) 

Respuesta

1

que tenía estos problemas, así, camino de regreso cuando utilicé NET 2.0 Windows Forms. Me parece recordar que Microsoft lanzó un Hotfix para esto. Busqué en Google y encontré estos dos. Podrías probarlos.

http://support.microsoft.com/kb/923028

http://support.microsoft.com/kb/971030

Además, ¿de instalar todos los Service Packs para .NET 2.0?

+0

Gracias por la respuesta @rewinder. El segundo enlace podría ser de interés en realidad.Sin embargo, la aplicación de revisiones/service packs es algo que evitaríamos durante el mayor tiempo posible, teniendo la aplicación instalada en cientos de máquinas. Actualmente estoy investigando si el cuadro combinado se altera, mientras que el hilo de la interfaz gráfica de usuario hace algo de trabajo en él: un rumor dice que la implementación subyacente del ComboBox no es completamente segura para subprocesos. – Christoffer

+0

@Christoffer: Ok. Bueno, avísame si encuentras algo. –

+1

Encontré otro tema algo relacionado en el Soporte de Microsoft: http://support.microsoft.com/kb/952544 Pero no estoy usando ninguna característica de autocompletado. Sin embargo, los elementos se pueden agregar a la colección de artículos OnKeyDown o OnSelectedIndexChanged. Todavía no sé si esto puede causar el problema, continuaré mi investigación. – Christoffer

-1

No le dé la oportunidad de sobrecargar la memoria, deseche todos sus elementos/controles nuevos y no utilizados No agregue/elimine constantemente objetos a un cuadro de lista, generalmente durante las operaciones de subprocesos.

Los problemas de GDI ocurren si no limpia la memoria.

Se producen excepciones de cuadros combinados, puede tener algo relacionado con el elemento seleccionado, si ese elemento tiene texto o un número entero almacenado. El texto debe ser texto, entero debe ser entero.

+0

Esto no responde la pregunta. Por favor revise su respuesta apropiadamente si es posible. –

Cuestiones relacionadas