1
我將文件存儲在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;
}
用戶第一次選擇文件,它已被顯示在Web瀏覽器中沒有問題。但是,如果第二次(當網絡瀏覽器仍顯示相同的PDF文件),它說
該進程無法訪問文件「C:\用戶\ mj.PG \文檔\ IssuedLetter \ 3.PDF」因爲它正在被另一個進程使用。
如果用戶再次單擊相同的文件以查看它,我該如何處理這種情況?
在寫入文件之前檢查文件是否存在?或者在文件被添加到數據庫時將文件寫入,而不是當它們顯示時 – Rob
我希望用戶能夠覆蓋文件(也許他已經改變了一些內容) – nnmmss
是的,但是您的代碼不是這樣做。下次有人查看它時,它會被'GetLetterImage'重寫。當用戶添加或編輯文件時處理持久化到磁盤,而不是讀取。 – Rob