EDIT:Я, наконец, нашел ошибку. Это абсолютно не имеет отношения к растровым изображениям или потокам или статике. Похоже, что один из моих коллег забыл удалить вложение электронной почты после отправки почты, и служба вложений электронной почты остается открытой. Я использовал инструкцию для отправки всей почты, и она решается. Всем спасибо.«Процесс не может получить доступ к файлу, потому что он используется другим процессом». Ошибка
Я знаю, что вы можете сказать, что есть миллиарды потоков с одним и тем же названием, и это дубликат, но поверьте мне, что это не так. Я искал решение, как 7 часов, но пока ничего не помогло.
Проблема заключается в следующем: это приложение для захвата фотографий, которое использует веб-камеру WebcamSource. Приложение работает хорошо, когда первая фотография берется и отправляется по электронной почте пользователю. Однако, когда пользователь снова возвращается к процессу (где он запускался до первого запуска), приложение дает такую ошибку. Ошибочный код приведен ниже.
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 [имя_проект] [имя_проект] \ Bin \ Debug \ Фотография «потому что он используется другим процессом.
Я попытался закрыть веб-поток, окружая код с TRY/поймать, поставив его в использовании заявление, добавив FileAccess и Обменник поля, пытаясь добавить BitmapCreateOptions.None
и BitmapCacheOption.OnLoad
(это не позволит мне), создавая новые образы с вместо того, чтобы переписывать одно и то же изображение, удаляя изображение после отправки электронной почты (это дало мне ту же ошибку) и некоторые небольшие меры, которые могут вызвать проблемы с доступом к файлам.
попробовать переименование image..to увидеть, если потоки апеллируют к нему. – Anand
Я уже пробовал это, я попытался сохранить каждое изображение с разными именами. –
не является «fstream.close» избыточным, так как использование (filestream) все равно закроет его? –