【问题标题】:"Red Cross" problem on MenuStrip and ToolStripMenuStrip 和 ToolStrip 上的“红十字”问题
【发布时间】:2009-06-16 07:44:25
【问题描述】:

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

会是 .NET 框架的版本吗?

谢谢

【问题讨论】:

    标签: c# multithreading toolstrip menustrip


    【解决方案1】:

    当存在 GDI+ 问题(“死亡的红色 X”)时,这种情况很常见。您是否在OnPaint 中进行任何自定义绘图?或者可能存在损坏或处理不当的图形资源或字形。

    编辑:我重新阅读了您的问题。您似乎仅在其中一台机器上拥有此功能。我为此搜索了一下,偶然发现了this old thread。底部的帖子表明关闭虚拟内存可能存在问题:

    我们确实设法解决了这个问题 - 我们是 在正在运行的设备上看到问题 XP 嵌入式。 XPe 映像开发人员 已关闭虚拟内存并作为 我们一打开问题 离开了。我相信这只是一个 系统耗尽的症状 显示图形的内存(也许 特别是如果你使用很多 双缓冲)

    希望对您有所帮助。

    【讨论】:

    • 不,我没有做任何自定义绘图,只是将它们用作标准,我理解你的意思,因为我在过去创建自定义控件时偶然发现了这一点。无论如何感谢您的帮助!
    【解决方案2】:

    对我来说,这听起来像是Out Of Memory Exception 的症状。

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

    【讨论】:

      【解决方案3】:

      您是否尝试从 GUI 线程以外的线程更新 GUI 控件?将跨线程操作与吞没所有内容的异常处理程序结合起来,我们在我正在维护的应用程序上拥有您描述的行为(在网格控件上,而不是菜单栏上)。

      【讨论】:

        【解决方案4】:

        听起来确实像一个跨线程问题。

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

        【讨论】:

          【解决方案5】:

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

          在两个不同的框架和一个没有数据绑定的程序上看到这个问题,我感到非常惊讶。我非常希望计算机关闭其虚拟内存。

          如果不是这样,那么任何关于跨 .NET 2.0 和 .NET 3.5 共享的系统部分的指导将不胜感激。

          更新:有问题的用户退役并更换了它(解决了问题)

          【讨论】:

            猜你喜欢
            • 2012-12-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-12-17
            • 1970-01-01
            • 2019-12-06
            • 1970-01-01
            相关资源
            最近更新 更多