我们遇到了一些似乎与.NET运行时相关的图形问题。偶尔,我们的应用程序中所有GroupBox的边框和所有NumericUpDowns的箭头消失。看起来他们因为某种原因停止了重新绘制,因为NumericUpDowns有时会在箭头应该出现的地方出现图形垃圾。GroupBoxes和NumericUpDowns的.NET图形问题
我们怀疑多次重新启动应用程序后发生错误。一旦问题出现,重新启动应用程序将无济于事。但是关闭所有.NET进程并重新启动应用程序会使问题消失,这意味着.NET运行时会出现问题。
我们的应用程序是一个使用VS 2008 SP1开发的,面向.NET 3.5的WinForms应用程序。它以经典模式(客户端公司策略)在Windows XP SP3上运行。
我搜索了其他人有类似的问题,但大多数点击涉及GroupBoxes的自定义绘画事件。我们的控制是纯粹的标准 - 根本不使用油漆事件。
编辑:我如何故意耗尽桌面堆重现问题?我一直在玩任务管理器和GdiUsage,同时创造笔,画笔和字体像疯了似的。当然不会调用dispose,而是将它们存储在列表中以避免垃圾回收。尽管如此,在用随机颜色创建100 000笔后,根据监视工具,我只需要一些对象。
List<Pen> pens = new List<Pen>();
Random rnd = new Random();
for(int i = 0; i < 100000; i++)
pens.Add(new Pen(Color.FromArgb(rnd.Next())));
只要您的笔名单超出范围,每笔可以垃圾收集。将列表存储在局部变量的类中。 –
我的例子有点不清楚,列表实际上存储在类中。 – Anlo