如何释放C# BitmapImage占用的资源?

 我来答
山雨楼中楼
推荐于2019-10-08 · 服务引领潮流,态度决定一切
山雨楼中楼
采纳数:79 获赞数:6050

向TA提问 私信TA
展开全部

[csharp] view plain copy

Bitmap是个好东西,但如果是直接Image.FromFile的话,那就会一直锁定该文件,如果你想读取文件后,再马上删除文件,可以这么做

[csharp] view plain copy

Bitmap FileToBitmap(string fileName)

{

// 打开文件

FileStream fileStream = new FileStream(fileName, FileMode.Open,
FileAccess.Read, FileShare.Read);

// 读取文件的 byte[]

byte[] bytes = new byte[fileStream.Length];

fileStream.Read(bytes, 0, bytes.Length);

fileStream.Close();

// 把 byte[] 转换成 Stream

Stream stream = new MemoryStream(bytes);

stream.Read(bytes, 0, bytes.Length);

// 设置当前流的位置为流的开始

stream.Seek(0, SeekOrigin.Begin);

MemoryStream mstream = null;

try

{

mstream = new MemoryStream(bytes);

return new Bitmap((Image)new Bitmap(stream));

}

catch (ArgumentNullException ex)

{

return null;

}

catch (ArgumentException ex)

{

return null;

}

finally

{

stream.Close();

}

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式