日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#Winform中picturebox控件加载图片后无法释放

發(fā)布時間:2023/12/20 C# 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#Winform中picturebox控件加载图片后无法释放 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

問題描述

??最近測試程序功能時發(fā)現(xiàn)存在圖片資源一直被占用無法釋放的問題。
??程序的功能大致為打開窗口時從服務器端臨時下載圖片到本地,然后在窗口中顯示,窗口關閉時清除下載的文件。在最后關閉窗口時會報“文件XXX.jpg正由另一進程使用,因此該進程無法訪問此文件”的錯誤。

原因分析

??通過分析程序代碼,最終定位到是加載圖片時使用了picturebox控件的load函數(shù)加載并顯示圖片,最后導致窗口關閉時無法刪除臨時文件。
??寫了一個測試程序還原上述問題,主要代碼如下

private string m_destFile = string.Empty; private void btnLoad_Click(object sender, EventArgs e) {OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = "JPG File|*.jpg";if (ofd.ShowDialog() == DialogResult.OK){m_destFile = System.IO.Path.Combine(Application.StartupPath, System.IO.Path.GetFileName(ofd.FileName));System.IO.File.Copy(ofd.FileName, m_destFile);picImage.Load(m_destFile);} }private void frmMain_FormClosed(object sender, FormClosedEventArgs e){if(System.IO.File.Exists(m_destFile)){System.IO.File.Delete(m_destFile);}}private void frmMain_FormClosing(object sender, FormClosingEventArgs e){if(picImage.Image!=null){picImage.Image.Dispose();picImage.Image = null;}} }

??測試程序的運行效果如下圖所示,加載并顯示圖片很正常,但是關閉窗口時刪除本地文件就會報錯,錯誤信息為圖片文件正由另一進程使用,無法訪問此文件。

解決方案

??百度了一下資料,發(fā)現(xiàn)碰到該問題的人不少,在此截取了部分文章作為參考文獻放在了本文最后,有興趣的可以看看。
??解決該問題的方式比較粗糙,就是把上述測試代碼中的:

picImage.Load(m_destFile);

??換成了下面的代碼,程序就可以正常關閉窗口,同時能順利刪除本地的臨時文件。

picImage.Image=new Bitmap(m_destFile);

??參考文獻中有介紹使用流方式加載圖片(FileStream ),有興趣的也可以試試。

參考文獻:
[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

總結

以上是生活随笔為你收集整理的C#Winform中picturebox控件加载图片后无法释放的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。