在创建新图像之前删除现有图像
本文关键字:图像 删除 新图像 创建 | 更新日期: 2023-09-27 17:58:52
Hi我有以下功能:
private void CreateRoomImage(string path)
{
Directory.CreateDirectory(path);
var file = "";
foreach (PanelView panelView in pv)
{
var RoomImage = GetRaumImageName(panelView.Title);
file = path + GetImageFile(RoomImage);
if (File.Exists(file))
{
File.Delete(file);
}
using (var img = GetRaumImage(panelView.Title, panelView))
{
ImageWriter imgWriter = new ImageWriter(ImageFormat.Bmp);
imgWriter.Save(img, file);
}
}
}
我的问题是,每次我试图删除现有文件时,我的程序都会抛出一个异常:
The process can not access the file because it is being used by another process
这个问题有解决办法吗?如何删除现有图像?
这似乎是一个奇怪的竞争条件,file.exists没有释放资源,并且试图在发布之前删除。我可能会尝试一些类似的东西。
try
{
File.Delete(file);
}
catch
{
//File does not exist or another error occurred.
}
我自己找到的。
在PageLoad中,我也使用软"文件"。我忘记处理图像:
foreach (PanelView panel in pv)
{
path = Request.PhysicalPath.Substring(0, Request.PhysicalPath.LastIndexOf('''') + 1) + subPath + "''" + GetRaumImageName(panel.Title);
bitMap = new Bitmap(path + ".bmp");
b0 = BmpToMonochromConverter.CopyToBpp(bitMap, 1);
// bounce.updateInterface.UpdateProductImage(b0, panel.Panel.PRODUCT_ID, "", ref update_Handle);
bitMap.Dispose();
}
不管怎样,谢谢你的帮助!
为什么首先要删除文件?如果现有文件已经存在,你不能让它覆盖它吗?
你可以做的另一件事是暂停线程大约400毫秒,直到操作系统完成它的任务,文件被完全删除,所有流都被关闭。