關於C#循環圖片GDI+內存不足異常的記錄


循環大量圖片的時候會報出GDI+內存不足的問題,這個問題困擾了我很久,下面是我的幾個解決方案:

  1. 使用using(){}代碼塊來定義需要釋放內存的變量。using代碼塊會在代碼結束的時候釋放變量,但是並不能徹底解決。
  2. 使用GC.Collect()啟動.NET自身的內存回收。但是這里注意,不要所有循環完畢了之后再回收,這樣起不到任何效果,要每次循環結尾的時候回收。但是這個仍然不能徹底的解決問題。
  3. 這是最關鍵的一步!Thread.Sleep(500)。是的,沒錯,進程暫停一小段時間。這個可以徹底解決內存不足的問題。

好了,這里要說一下為什么進程暫停可以徹底解決這個問題。因為內存釋放並是單獨的代碼,即內存釋放和程序代碼是同時執行的,也就是異步的。這里需要等待徹底釋放之后,再運行其它的代碼,所以要暫停一下進程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM