Ich speichere Dateien in einer SQL Server-Datenbank und zeige auch die Dateien in meiner Anwendung an, wenn ein Benutzer sie auswählt. das ist, was ich getan habe:Der Prozess kann nicht auf die Datei JJJJ zugreifen, da er von einem anderen Prozess verwendet wird.
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;
}
Das erste Mal, dass Benutzer eine Datei auswählen, ist es problemlos in Web-Browser dargestellt. Aber wenn für die zweite Zeit (wenn der Web-Browser nach wie vor die gleiche PDF-Datei angezeigt wird) es sagt
Der Prozess kann nicht auf die Datei zugreifen ‚C: \ Benutzer \ mj.PG \ Dokumente \ IssuedLetter \ 3.pdf‘ weil es von einem anderen Prozess verwendet wird.
Wie kann ich mit der Situation umgehen, wenn der Benutzer erneut auf dieselbe Datei klickt, um sie anzuzeigen?
Überprüfen Sie, ob die Datei existiert, bevor Sie darauf schreiben? Oder schreiben Sie die Dateien dort, wie sie zur Datenbank hinzugefügt werden, anstatt wenn sie angezeigt werden – Rob
Ich möchte Benutzer in der Lage sein, die Datei zu überschreiben (vielleicht hat er etwas daran geändert) – nnmmss
Ja, aber Ihr Code ist nicht das machen. Das nächste Mal, wenn jemand es anschaut, wird es von "GetLetterImage" überschrieben. Handle persistent to disk, wenn ein Benutzer die Datei hinzufügt oder bearbeitet, nicht beim Lesen. – Rob