2012-07-27 43 views
1

我已經在C#中使用GDI +技術開發了一些組件...我使用invalidate函數來重繪組件。在做了一些研究並檢查CPU利用率後,我可以看到當調用invalidate函數,突然CPU使用率增加,並在一段時間後它被釋放..這是好的,當組件重新繪製有時..但在我的情況下,我所做的組件被反覆調用,並在高峯時間..突然CPU利用率去100%...系統似乎掛了..我做了很多代碼優化,但它似乎無效的方法只是殺死整個表現..我只是想知道..實際上在這種方法稱爲...和有什麼最好的做法,以最好地利用這種方法...GDI +內存利用率

+0

不要使用GDI +,這正是它應該避免的原因。使用硬件加速的東西,例如PresentationCore程序集中的'BitmapImage'。 – vcsjones 2012-07-27 14:46:38

+0

我不明白這與內存泄漏有何關係。你能否更新文字或標籤? – 2012-07-27 14:51:25

+0

@vcsjones:你是對的,但這意味着我必須從當前體系結構切換到WPF並再次創建所有組件。這是目前不可行的事情......因爲我有大約35個自定義使用GDI +製作的組件。 – 2012-07-27 14:53:54

回答

1

1)使用Perfview到配置文件你的應用程序:http://www.microsoft.com/en-us/download/details.aspx?id=28567

2)無效的方法不應該實際繪製。它只是告訴OS需要重繪。這是實際繪製的OnPaint方法。檢查你的繪圖方法。通常,基於GDI的應用程序會查詢髒區域以限制重繪區域。