Я храню файлы в базе данных SQL Server, а также показываю файлы в своем приложении, если пользователь их выбирает. это то, что я сделал:Процесс не может получить доступ к файлу yyyy, потому что он используется другим процессом
LetterBAL letterBal = new LetterBAL();
string filter = "Id=" + letterListView.SelectedItems[0].Text;
Letter letter = letterBal.GetLetterImage(filter);
string path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
path = path + "\\IssuedLetter\\" +letter.Id.ToString() + "." +letter.FileExt;
webBrowser1.Navigate(path);
public Letter GetLetterImage(string filter)
{
LetterDB letterDB = new LetterDB();
Letter letter = letterDB.GetLetterImage(filter);
string path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
path = path + "\\IssuedLetter";
path = path + "\\" + letter.Id.ToString() + "." + letter.FileExt;
using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write))
fs.Write(letter.ltr_Image, 0, letter.ltr_Image.Length);
return letter;
}
Первый раз, когда пользователи выбирают файл, он отображается в браузере без проблем. Но если во второй раз (когда веб-браузер все еще показывает один и тот же файл PDF) он говорит
Процесс не может получить доступ к файлу «C: \ Users \ mj.PG \ Documents \ IssuedLetter \ 3.pdf» потому что он используется другим процессом.
Как я могу справиться с ситуацией, если пользователь снова нажмет один и тот же файл, чтобы просмотреть его?
Проверьте, существует ли файл перед записью на него? Или напишите файлы там, поскольку они добавлены в базу данных, а не когда они отображаются. – Rob
Я хочу, чтобы пользователь мог перезаписать файл (возможно, он что-то изменил) – nnmmss
Да, но ваш код не является делая это. В следующий раз, когда кто-то просмотрит его, он будет перезаписан «GetLetterImage». Обращаться с диском, когда пользователь добавляет или редактирует файл, а не читается. – Rob