Pregunta

Tengo una pieza de software que ha funcionado bien en muchas máquinas, aunque en una máquina hay un problema que parece ocurrir ocasionalmente, el MenuStrip y el ToolStrip aparecen como un fondo blanco en blanco con una cruz roja sobre él, como un control personalizado lo haría si creó un objeto nulo. Esto no ocurre mientras estoy haciendo la depuración y no sé cómo hacer que el problema vuelva a ocurrir, pero sucede. Me preguntaba si alguien sabía cuál podría ser el problema?

¿Sería la versión de .NET framework?

Gracias

¿Fue útil?

Solución

Esto ocurre con frecuencia cuando hay un problema de GDI + (" La X roja de la muerte "). ¿Está haciendo algún dibujo personalizado en OnPaint ? O tal vez hay un recurso gráfico o un glifo que está dañado o que se eliminó incorrectamente.

Editar: He releído tu pregunta. Parece que tienes esto solo en una de las máquinas. Busqué en Google un poco por esto, y me topé con este hilo anterior . La publicación en la parte inferior sugiere que podría haber un problema con la memoria virtual desactivada:

  

Logramos resolver esto - estábamos   viendo el problema en un dispositivo en ejecución   XP embebido. El desarrollador de imágenes XPe   había desactivado la memoria virtual y como   tan pronto como lo encendimos en el problema   se fue. Creo que es solo un   síntoma de que el sistema se está quedando sin   memoria para mostrar los gráficos (tal vez   particularmente si usas mucho   doble búfer)

Espero que ayude.

Otros consejos

Suena como un síntoma de un Fuera de memoria Excepción a mi

Editar: Lo que a veces puede conducir a un System.InvalidOperationException: BufferedGraphicsContext

¿Está intentando actualizar los controles de la GUI desde un subproceso que no sea el subproceso de la GUI? Combine la operación de subprocesos cruzados con un controlador de excepciones que se tragó todo y tuvimos el comportamiento que describió (en un control de cuadrícula, no en una barra de menustrip) en una aplicación que estaba manteniendo.

Definitivamente suena como un problema entre hilos.

Asegúrate de usar Invoke cuando accedes a controles y / o dispares eventos desde un hilo que no es el hilo principal de la interfaz de usuario.

Al ver esto suceder en una sola computadora de más de 1000 que tienen nuestros productos. En esa computadora, veo que un programa .NET 3.5 muestra ocasionalmente la X roja en su cuadrícula de datos. Y otro programa .NET 2.0 mucho más simple obtuvo la X roja en su menuStrip. Solo tengo el código fuente para el programa más simple, pero puedo decir que no hay ningún código de usuario que afecte a ese componente. No hay cosas de hilos cruzados porque nada lo actualiza. Sus contenidos se configuran en el momento del desarrollo con un elemento agregado en la carga del programa. La falla de Red X estuvo bien después de la carga del programa.

Me sorprendió mucho ver el problema en dos marcos diferentes y en un programa que no tiene enlaces de datos. Espero que la computadora tenga su memoria virtual apagada.

Si no es así, se agradecería cualquier orientación sobre partes del sistema que se compartan en .NET 2.0 y .NET 3.5.

Actualización: el usuario con el problema retiró la computadora y la reemplazó (lo que resolvió el problema)

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