我有一个软件在许多机器上运行良好,虽然在一台机器上有一个问题似乎偶尔会发生,但MenuStrip和ToolStrip都显示为一个空白的白色背景,上面有一个红叉,如如果您创建了一个空对象,则会使用自定义控件。这在我调试时不会发生,我不知道如何重新发生问题,但它确实发生了。我想知道是否有人知道这可能是什么问题?
它是.NET框架的版本吗?
由于
答案 0 :(得分:3)
当存在GDI +问题时(“死亡的红色X”),这是常见的事情。你在OnPaint
进行任何自定义绘图吗?或者也许有图形资源或字形腐败或被错误处置。
修改:我重新阅读了您的问题。你似乎只在其中一台机器上有这个。我为此搜索了一下,我偶然发现了this old thread。底部的帖子表明虚拟内存可能存在问题:
我们确实设法解决了这个问题 - 我们是 在运行的设备上看到问题 XP嵌入式。 XPe图像开发人员 已关闭虚拟内存和 我们就把问题转过来了 走了。我相信这只是一个 系统运行的症状 内存来显示图形(也许 特别是如果你使用了很多 双缓冲)
希望有所帮助。
答案 1 :(得分:2)
听起来像Out Of Memory Exception给我的症状。
修改强>
有时会导致System.InvalidOperationException: BufferedGraphicsContext
答案 2 :(得分:1)
您是否尝试从GUI线程以外的线程更新GUI控件?将交叉线程操作与吞噬所有内容的异常处理程序相结合,我们在我正在维护的应用程序上执行了您描述的行为(在网格控件上,而不是menustrip栏)。
答案 3 :(得分:1)
最终听起来像是一个跨线程的问题。
确保在从不是主UI线程的线程访问控件和/或触发事件时使用Invoke。
答案 4 :(得分:1)
只有一台拥有我们产品的1000多台电脑才能看到这种情况。 在那台计算机上,我看到.NET 3.5程序偶尔在其数据网格上显示红色X.另一个更简单的.NET 2.0程序在其menuStrip上获得了红色X.我只有简单程序的源代码,但我可以说根本没有任何影响该组件的用户代码。没有跨线程的东西,因为没有更新它。它的内容是在开发时设置的,在程序加载时添加了一个项目。程序加载后Red X失败很好。
我很惊讶地发现两个不同框架和一个没有数据绑定的程序存在问题。我非常希望电脑的虚拟内存关闭。
如果不是那样的话,那么对于在.NET 2.0和.NET 3.5中共享的系统部分的任何指导都将不胜感激。
更新:有问题的用户退出计算机并替换它(解决了问题)