2010-01-26 74 views
0

我有Windows窗體桌面CRUD應用程序。用戶發現,如果它太長時間最小化,所有控件都轉向黑色填充框,並且它變得無響應。Win Form應用程序控件變爲黑色並在最小化時間過長時鎖定應用程序

這是我的第一個大型應用程序,我甚至不知道從哪裏開始。在網上搜索'Black Filled Boxes'並沒有真正有效......

我在做什麼錯了?我在哪裏可以開始尋找?我的應用程序是一個單獨的窗體,根據他們在窗體上的導航菜單中選擇的內容,在主區域中嵌入必要的用戶控件。

示例;他們選擇保險,並在ShellForm的主要內容區域顯示ucInsurance

Idea's?我很感激任何事情。我試着對Shell Form和所有的用戶控件開啓了Double Buffer,但這看起來並不有效。

回答

2

首先查看您的表單如何與Taskmgr.exe一起運行。單擊進程選項卡,查看+選擇列並勾選句柄,USER對象,GDI對象。如果您的流程中的任何這些列不斷攀升,您通常會忘記Dispose(),從而導致資源泄漏。 GDI可能是你描述中的可能之一。當它達到10,000時,節目結束。

+0

我做了這個,打開我的應用程序,然後彈跳了5分鐘,搜索並加載了幾個人,我的統計數據是 - > MemUsage = 81000K,句柄= 567,線程= 16,USERObjects = 412, GDIObjects = 301。 這很值得關注嗎?我會保持開放狀態,並在晚些時候向我彙報我的調查結果。 – 2010-01-26 14:59:47

+0

此外,我的應用程序的memusage在「最小化」時下降到4000K,然後在「80000 + K」之前最大化返回到12000K時是否爲「正常」? – 2010-01-26 15:01:50

+0

是的,這很正常。主窗口最小化時,Windows主動修剪進程的工作集。不要留意記憶。爲了重現客戶的問題,一個不會觸發垃圾收集的空閒表單會與由於忘記調用Dispose()而導致的泄漏相關聯。 – 2010-01-26 15:05:25