我們遇到了一些似乎與.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