C#Winform中picturebox控件加载图片后无法释放
問題描述
??最近測試程序功能時(shí)發(fā)現(xiàn)存在圖片資源一直被占用無法釋放的問題。
??程序的功能大致為打開窗口時(shí)從服務(wù)器端臨時(shí)下載圖片到本地,然后在窗口中顯示,窗口關(guān)閉時(shí)清除下載的文件。在最后關(guān)閉窗口時(shí)會(huì)報(bào)“文件XXX.jpg正由另一進(jìn)程使用,因此該進(jìn)程無法訪問此文件”的錯(cuò)誤。
原因分析
??通過分析程序代碼,最終定位到是加載圖片時(shí)使用了picturebox控件的load函數(shù)加載并顯示圖片,最后導(dǎo)致窗口關(guān)閉時(shí)無法刪除臨時(shí)文件。
??寫了一個(gè)測試程序還原上述問題,主要代碼如下
??測試程序的運(yùn)行效果如下圖所示,加載并顯示圖片很正常,但是關(guān)閉窗口時(shí)刪除本地文件就會(huì)報(bào)錯(cuò),錯(cuò)誤信息為圖片文件正由另一進(jìn)程使用,無法訪問此文件。
解決方案
??百度了一下資料,發(fā)現(xiàn)碰到該問題的人不少,在此截取了部分文章作為參考文獻(xiàn)放在了本文最后,有興趣的可以看看。
??解決該問題的方式比較粗糙,就是把上述測試代碼中的:
??換成了下面的代碼,程序就可以正常關(guān)閉窗口,同時(shí)能順利刪除本地的臨時(shí)文件。
picImage.Image=new Bitmap(m_destFile);??參考文獻(xiàn)中有介紹使用流方式加載圖片(FileStream ),有興趣的也可以試試。
參考文獻(xiàn):
[1]C# 圖片資源無法釋放問題,https://blog.csdn.net/banket004/article/details/17262649
[2]c#釋放已經(jīng)加載的圖片,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#釋放已經(jīng)加載的圖片,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
總結(jié)
以上是生活随笔為你收集整理的C#Winform中picturebox控件加载图片后无法释放的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯云存储产品介绍第四章-云存储计费方案
- 下一篇: C#莱姆达表达式的使用