Question

J'ai un logiciel qui a bien fonctionné sur de nombreuses machines, bien que, sur une machine, un problème semble se produire occasionnellement. MenuStrip et ToolStrip apparaissent tous deux sous la forme d'un fond blanc et blanc avec une croix rouge. un contrôle personnalisé serait si vous avez créé un objet null. Cela ne se produit pas pendant le débogage et je ne sais pas comment faire en sorte que le problème se reproduise, mais cela se produit. Je me demandais si quelqu'un savait quel pourrait être le problème?

S'agirait-il de la version du framework .NET?

Merci

Était-ce utile?

La solution

C’est un phénomène courant lorsqu'il existe un problème lié à GDI + ("Le X rouge de la mort"). Faites-vous des dessins personnalisés dans OnPaint ? Ou peut-être existe-t-il une ressource graphique ou un glyphe corrompu ou éliminé de manière inappropriée.

Modifier: j'ai relu votre question. Vous semblez ne l'avoir que sur l'une des machines. J'ai googlé un peu pour cela, et je suis tombé sur cet ancien fil de discussion . Le message en bas suggère qu’il pourrait y avoir un problème avec la mémoire virtuelle désactivée:

  

Nous avons réussi à résoudre ce problème - nous étions   voir le problème sur un périphérique en cours d'exécution   XP intégré. Le développeur d'images XPe   avait désactivé la mémoire virtuelle et comme   dès que nous avons tourné le problème   parti. Je crois que c'est juste un   symptôme du système à court de   mémoire pour afficher les graphiques (peut-être   surtout si vous utilisez beaucoup de   double tampon)

L’espoir que cela aide.

Autres conseils

Cela ressemble à un symptôme d'une Exception d'insuffisance de mémoire pour moi.

Modifier: Ce qui peut parfois conduire à un System.InvalidOperationException: BufferedGraphicsContext

Essayez-vous de mettre à jour les contrôles de l'interface graphique à partir d'un thread autre que celui de l'interface graphique? Combinez l’opération de fil croisé avec un gestionnaire d’exceptions qui a tout avalé et nous avons eu le comportement que vous décrivez (sur un contrôle de grille, pas de barre de menu) sur une application que je maintenais.

Cela ressemble vraiment à un problème de cross-thread.

Assurez-vous d'utiliser Invoke lorsque vous accédez aux contrôles et / ou au déclenchement d'événements à partir d'un thread autre que le thread principal de l'interface utilisateur.

Voir cela se produire sur un seul ordinateur sur plus de 1000 qui ont nos produits fier. Sur cet ordinateur, un programme .NET 3.5 affiche occasionnellement le X rouge sur sa grille de données. Et un autre programme .NET 2.0 beaucoup plus simple a obtenu le X rouge sur son menuStrip. Je n'ai que du code source pour le programme le plus simple, mais je peux dire qu'il n'y a pas de code utilisateur qui affecte ce composant. Pas de cross-thread, car rien ne le met à jour. Son contenu est défini au moment du développement avec un élément ajouté au chargement du programme. L’échec de Red X était bien après le chargement du programme.

J'ai été très surpris de voir le problème à travers deux frameworks différents et sur un programme sans liaisons de données. J'espère très fort que la mémoire virtuelle de l'ordinateur est désactivée.

Si ce n'est pas le cas, toutes les instructions relatives aux composants système partagés entre .NET 2.0 et .NET 3.5 seraient appréciées.

Mise à jour: l'utilisateur présentant le problème a retiré l'ordinateur et l'a remplacé (ce qui a résolu le problème)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top