簡體   English   中英

用戶控件添加到控件時使用過多的內存,最終出現“內存不足”錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM