2009-06-16 2 views
4

Ich habe eine Software, die auf vielen Maschinen funktioniert hat, obwohl auf einem Computer ein Problem auftritt, das gelegentlich auftritt, erscheinen der MenuStrip und der ToolStrip beide als leeres weiß Hintergrund mit einem roten Kreuz darüber, als ein benutzerdefiniertes Steuerelement würde, wenn Sie ein Null-Objekt erstellt. Dies passiert nicht, während ich debugge und ich weiß nicht, wie ich das Problem wieder auftreten lassen kann, aber es passiert. Ich habe mich gefragt, ob jemand wüsste, was das Problem sein könnte?"Rotes Kreuz" Problem auf MenuStrip und ToolStrip

Wäre es die Version von .NET Framework?

Dank

Antwort

3

Dies ist ein häufiges Vorkommen, wenn ein GDI + Problem auftritt ("Das rote X des Todes"). Machst du eine benutzerdefinierte Zeichnung in OnPaint? Oder vielleicht gibt es eine grafische Ressource oder eine Glyphe, die korrupt ist oder unsachgemäß entsorgt wird.

Bearbeiten: Ich habe Ihre Frage erneut gelesen. Sie scheinen das nur auf einer der Maschinen zu haben. Ich habe dafür ein wenig gegoogelt und bin auf this old thread gestoßen. Der Pfosten am Boden legt nahe, dass es möglicherweise ein Problem mit Virtual Memory ausgeschaltet:

Wir schaffen dies zu lösen - wir das Problem auf ein Gerät zu sehen waren läuft XP embedded. Der XPe-Image-Entwickler hatte Virtual Memory ausgeschaltet und als bald als wir es eingeschaltet haben ging das Problem weg. Ich glaube, es ist nur ein Symptom des Systems aus Speicher läuft die Grafik angezeigt werden (vielleicht vor allem, wenn Sie eine Menge Doppelpufferung verwenden)

Hoffnung, das hilft.

+0

(was das Problem gelöst) Nein, ich bin keine benutzerdefinierte Zeichnen zu tun, nur um sie als Standard, ich verstehe, was Sie, wie ich meine, bin darüber gestolpert, wenn ich in der Vergangenheit benutzerdefinierte Steuerelemente erstellt habe. Danke für deine Hilfe trotzdem! – ThePower

+0

Entschuldigung, ich habe deine Frage das erste Mal falsch gelesen. –

+0

Danke für das Update und die Informationen – ThePower

1

Versuchen führen können Sie die GUI-Controls von einem anderen Thread als der GUI-Thread zu aktualisieren? Kombinieren Sie die Cross-Thread-Operation mit einem Exception-Handler, der alles verschluckt hat, und wir hatten das von Ihnen beschriebene Verhalten (auf einem Gitter-Steuerelement, nicht auf einer Menustrip-Leiste) für eine App, die ich gewartet habe.

1

Endlich klingt wie ein Cross-Thread-Problem.

Stellen Sie sicher, dass Sie Invoke beim Zugriff auf Steuerelemente und/oder Auslösen von Ereignissen aus einem Thread verwenden, der nicht der Hauptthread der Benutzeroberfläche ist.

1

Sehen Sie dies auf nur einem Computer von mehr als 1000, die unsere Produkte haben. Auf diesem Computer sehe ich ein .NET 3.5-Programm gelegentlich das rote X auf seinem Datagrid zeigen. Und ein anderes viel einfacheres .NET 2.0 Programm hat das rote X auf seinem menuStrip. Ich habe nur Quellcode für das einfachere Programm, aber ich kann sagen, dass es überhaupt keinen Benutzercode gibt, der diese Komponente betrifft. Kein Cross-Thread-Kram, weil nichts aktualisiert wird. Der Inhalt wird zur Entwicklungszeit festgelegt, wobei beim Laden des Programms ein Element hinzugefügt wird. Der Red X-Fehler war nach der Programmauslastung gut.

Ich war sehr überrascht, das Problem in zwei verschiedenen Frameworks und auf einem Programm zu sehen, das keine Datenbindungen hat.Ich hoffe sehr, dass der Computer seinen virtuellen Speicher ausgeschaltet hat.

Wenn es nicht ist, dann würde jede Anleitung zu Systemteilen, die über .NET 2.0 und .NET 3.5 gemeinsam genutzt werden, geschätzt werden.

Update: Der Benutzer mit dem Problem, den Computer im Ruhestand und ersetzt es