MenuStrip和ToolStrip上的“红十字”问题

我有一个软件在许多机器上运行良好,虽然在一台机器上有一个问题似乎偶尔发生,但MenuStrip和ToolStrip都显示为一个空白的白色背景,上面有红叉,作为自定义控件如果你创建了一个null对象。 这在我调试时不会发生,我不知道如何重新发生问题,但它确实发生了。 我想知道是否有人知道可能是什么问题?

它是.NET框架的版本吗?

谢谢

当出现GDI +问题时(“死亡之红X”),这种情况很常见。 你在OnPaint做任何自定义绘图吗? 或者可能是图形资源或字形腐败或处置不当。

编辑:我重新阅读了你的问题。 你似乎只在其中一台机器上有这个。 我为此搜索了一下,我偶然发现了这个旧线程 。 底部的post表明虚拟内存可能存在问题:

我们设法解决了这个问题 – 我们在运行嵌入式XP的设备上看到了问题。 XPe图像开发人员关闭了虚拟内存,一旦我们打开它,问题就消失了。 我认为这只是系统耗尽内存以显示图形的一种症状(特别是如果你使用了大量的双缓冲)

希望有所帮助。

听起来像是一个Out of Memoryexception的症状对我来说。

编辑:有时会导致System.InvalidOperationException: BufferedGraphicsContext

您是否尝试从GUI线程以外的线程更新GUI控件? 将交叉线程操作与吞噬所有内容的exception处理程序相结合,我们在我维护的应用程序上有你描述的行为(在网格控件上,而不是menustrip栏)。

最终听起来像是一个跨线程的问题。

确保在从不是主UI线程的线程访问控件和/或触发事件时使用Invoke。

只有一台拥有我们产品的1000多台电脑才能看到这种情况。 在那台计算机上,我看到.NET 3.5程序偶尔在其数据网格上显示红色X. 另一个更简单的.NET 2.0程序在其menuStrip上获得了红色X. 我只有简单程序的源代码,但我可以说根本没有任何影响该组件的用户代码。 没有跨线程的东西,因为没有更新它。 它的内容是在开发时设置的,在程序加载时添加了一个项目。 程序加载后,Red X故障很好。

我很惊讶地看到两个不同框架和一个没有数据绑定的程序的问题。 我非常希望电脑关闭虚拟内存。

如果不是这样,那么对于在.NET 2.0和.NET 3.5中共享的系统部件的任何指导都将受到赞赏。

更新:有问题的用户退出计算机并替换它(解决了问题)