C#Winform中picturebox控件加载图片后无法释放
問題描述
??最近測試程序功能時發(fā)現(xiàn)存在圖片資源一直被占用無法釋放的問題。
??程序的功能大致為打開窗口時從服務器端臨時下載圖片到本地,然后在窗口中顯示,窗口關閉時清除下載的文件。在最后關閉窗口時會報“文件XXX.jpg正由另一進程使用,因此該進程無法訪問此文件”的錯誤。
原因分析
??通過分析程序代碼,最終定位到是加載圖片時使用了picturebox控件的load函數(shù)加載并顯示圖片,最后導致窗口關閉時無法刪除臨時文件。
??寫了一個測試程序還原上述問題,主要代碼如下
??測試程序的運行效果如下圖所示,加載并顯示圖片很正常,但是關閉窗口時刪除本地文件就會報錯,錯誤信息為圖片文件正由另一進程使用,無法訪問此文件。
解決方案
??百度了一下資料,發(fā)現(xiàn)碰到該問題的人不少,在此截取了部分文章作為參考文獻放在了本文最后,有興趣的可以看看。
??解決該問題的方式比較粗糙,就是把上述測試代碼中的:
??換成了下面的代碼,程序就可以正常關閉窗口,同時能順利刪除本地的臨時文件。
picImage.Image=new Bitmap(m_destFile);??參考文獻中有介紹使用流方式加載圖片(FileStream ),有興趣的也可以試試。
參考文獻:
[1]C# 圖片資源無法釋放問題,https://blog.csdn.net/banket004/article/details/17262649
[2]c#釋放已經加載的圖片,https://blog.csdn.net/laiyinping/article/details/39891803?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-7.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-7.control
[3]C#釋放已經加載的圖片,https://blog.csdn.net/weixin_30609331/article/details/95935969?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242
[4]Winform中的PictureBox讀取圖像文件無法釋放的問題,https://www.cnblogs.com/chas/p/3760472.html
總結
以上是生活随笔為你收集整理的C#Winform中picturebox控件加载图片后无法释放的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯云存储产品介绍第四章-云存储计费方案
- 下一篇: ccs船级社认证费用多少_船级社认证费