[英]Usercontrol uses an excessive amount of memory when added to a control, eventually get Out of Memory error
我有一個程序可以從數據庫中加載帶有圖像和其他信息(例如概述文本等)的電影信息。 作為測試,我要加載約480部1200部以上的電影。
我的MovieTile控件包含一個圖片框和工具提示控件,並具有大約10個公共字符串屬性。
我有一個用戶控件List<MovieTile>();
。 加載所有電影和數據等並初始化磁貼后,我的程序大約需要12mbs。
一旦我將影片拼貼添加到FlowLayoutPanel中,內存就會跳到1.4GB。 一旦我開始滾動瀏覽面板以開始查看磁貼,經過大約一半的學習后,我當然就不會驚訝地收到“內存不足”異常。 全部來自取消注釋的pnlMovies.Controls.Add(tile);
我嘗試將圖塊手動添加到面板上,以為flowlayoutpanel可能有一些開銷或其中包含太多控件的東西,但是我遇到了同樣的問題。
是否有其他方法可以解決此問題,或者什么原因可能導致內存大量增加? 或者,也許有一種更有效,更恰當的方式來處理許多控件?
提前致謝。
建議不要開發或使用可以處理虛擬模式和分頁的容器控件,而不是同時加載所有項目。
這樣,您可以僅加載和顯示顯示的項目。 因此,內存消耗不會超過顯示項目所需的數量。
我建議您嘗試使用ListView 。 它具有易於使用的虛擬模式 。
如果您的用戶控件是高度自定義的並且不僅僅顯示圖片,那么ListView可能不是正確的解決方案。 然后,您可以查看實現虛擬模式的DataRepeater控件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.