“进程无法访问该文件,因为它正被另一个进程使用”错误
本文关键字:进程 另一个 错误 因为 访问 文件 | 更新日期: 2023-09-27 18:28:17
编辑: 我终于发现了错误。它与位图或流或静态完全无关。我的一位同事似乎在发送邮件后忘记删除电子邮件附件,并且邮件附件服务保持打开状态。我在整个邮件发送过程中使用了 using 语句,它解决了。谢谢大家。
我知道你可能会说有数十亿个具有相同标题的线程,这是一个重复的,但相信我,事实并非如此。我一直在寻找 7 小时的解决方案,但到目前为止没有任何帮助。
问题如下:这是一个使用网络摄像头作为网络摄像头的照片捕获应用程序。当拍摄第一张照片并通过电子邮件发送给用户时,该应用程序运行良好。但是,当用户再次返回到进程(在第一次运行之前开始的地方(时,应用程序会给出这样的错误。错误的代码如下。
public static void SaveImageCapture(BitmapSource bitmap)
{
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
// bitmap = BitmapFrame.Create(BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
encoder.Frames.Add(BitmapFrame.Create(bitmap));
encoder.QualityLevel = 100;
encoder.Rotation = Rotation.Rotate270;
try
{
using (FileStream fstream = new FileStream("Photos''" + fileName + ".jpg", FileMode.Create))
{
encoder.Save(fstream);
fstream.Close();
}
}
catch (Exception e) {
System.Windows.Forms.MessageBox.Show(e.ToString());
}
}
代码在FileStream fstream = new FileStream("Photos''" + fileName + ".jpg", FileMode.Create)
崩溃并给出错误
进程无法访问文件"C:''Users[用户名]''Dropbox[projectname][projectname]''bin''Debug''Photos",因为它正被另一个进程使用。
我尝试关闭网络摄像头流,用try/catch包围代码,将其放入使用语句中,添加FileAccess和文件共享字段,尝试添加BitmapCreateOptions.None
和BitmapCacheOption.OnLoad
(它不允许我(,创建具有不同名称的新图像而不是覆盖相同的图像,发送电子邮件后删除图像(它给了我相同的错误(, 以及一些可能导致文件访问问题的小安排。
我建议使文件名更通用,以便附加时间戳或其他内容,但此外,在using
调用中,fstream.Flush()
在fstream.Close()
之前
此点之前,您是否在代码中的其他任何位置引用该文件位置(主要是照片文件夹(?
似乎您已经在代码中的其他地方访问了它,并且与它的连接尚未关闭 - 每当调用 IO 方法时,使用 Using
块很方便。
虽然不理想,但尽量在encoder.Rotation = Rotation.Rotate270;
后打电话给GC.Collect()