一尘不染

新的Bitmap(filePath)锁定的免费文件

c#

我的PictureBox的图像指向某个文件“ A”。在执行时,我想将PictureBox的图像更改为另一个“ B”,但是出现以下错误:

“ mscorlib.dll中发生类型’System.IO.IOException’的第一次机会异常。附加信息:该进程无法访问文件“
A”,因为它正在被另一个进程使用。“

我将图像设置如下:

pbAvatar.Image = new Bitmap(filePath);

如何解锁第一个文件?


阅读 303

收藏
2020-05-19

共1个答案

一尘不染

一旦从文件中读取并处理了文件,使用文件流将对文件进行解锁:

using (var fs = new System.IO.FileStream("c:\\path to file.bmp", System.IO.FileMode.Open))
{
    var bmp = new Bitmap(fs);
    pct.Image = (Bitmap) bmp.Clone();
}

编辑: 更新以允许处置原始位图,并允许关闭FileStream。

此答案并不安全
-请参阅评论,并参阅net_prog的答案中的讨论。使用“编辑”
Clone不会使其变得更安全-克隆会克隆所有字段,包括文件流引用,这在某些情况下会引起问题。

2020-05-19