Der Prozess kann nicht auf die Datei zugreifen, da wird Sie von einem anderen Prozess verwendet
Bin ich immer binäre Daten aus einer SQL Server-Datenbank-Feld und bin erstellen Sie ein Dokument lokal in ein Verzeichnis meiner Anwendung die erforderlichen Berechtigungen hat. Aber ich bin noch immer der Fehler in der angegebenen Titel. Ich habe versucht, zahlreiche Vorschläge, die auf dem web veröffentlicht, darunter die vorgeschlagene in früheren posts auf Stackoverflow. Ich habe auch ProcessExplorer > Finden, Griff Sie zu lokalisieren Sie den Verschluss und es gibt nichts, wie wenn die Datei nicht gesperrt ist.
Ich bin mit dem code unten, um die Datei zu speichern, um die Datei-system und ich versuche dann, die Datei zu kopieren, um eine neue Position später in der Bewerbung in einer anderen Methode. Es ist diese copy-Methode, die den Pfad der neu erstellten Datei, die die Ausnahme ausgelöst.
Die Datei selbst erstellt mit dem Inhalt und ich kann Sie öffnen über den Windows-Explorer ohne Probleme.
Übersehe ich etwas ganz offensichtliches? Bin ich der Erstellung der Datei korrekt aus der Datenbank? Jede Hilfe zu lösen oder eine bessere Diagnose des Problems wäre sehr geschätzt werden.
//Get file from DB
FileStream fs = new FileStream(
"C:\myTempDirectory\myFile.doc", FileMode.OpenOrCreate, FileAccess.Write);
BinaryWriter br = new BinaryWriter(fs);
br.Write("BinaryDataFromDB");
fs.Flush();
fs.Close();
fs.Dispose();
//Copy file
File.Copy(sourceFileName, destinationFilename, true);
InformationsquelleAutor der Frage Cragly | 2010-02-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, einen Anruf zu
GC.Collect()
nachdem Sie entsorgt Ihre streams zu erzwingen, dass der garbage collector Aufräumen.InformationsquelleAutor der Antwort Jesper Palm
ändern Sie Ihren code wie folgt, das problem ist, dass die das filestream-nicht der Müll gesammelt, wenn Sie Sie brauchen:
InformationsquelleAutor der Antwort NotMe
Was
using
?BEARBEITEN: Versuchen Sie zu informieren
FileShare.Read
Berechtigung.InformationsquelleAutor der Antwort Rubens Farias
Kam ich zu verstehen, dass obwohl die Fehler debugger sagt, dass der Fehler liegt in diesem code.. Aber das ist nicht, wo der Fehler ist..
Ich Stand vor einem ähnlichen Problem und ich kam mit dieser Lösung.. betrachten alle der oben genannten Beiträge..
Kann sein, es kann einigen helfen..
Ich verwendet das Bild, um es in eine picturebox nach der beim abrufen aus der Datenbank und speichern Sie es als "temp.bmp" mit der normalen Codierung, ohne über das Schlüsselwort "using" mit diesem code ist auf den ersten:
und hob Sie und Fehler und ich wusste wirklich nicht, hab Kopf und Schwanz der Fehler.. und so kam ich auf diese Lösung.
Anstelle von zuweisen es direkt versuchen, diesen code:
kommen, um die filestream-Teil habe ich nur verwendet, normalen code wie folgt:
und es funktionierte wie ein Stück Kuchen
Es wirklich geholfen
InformationsquelleAutor der Antwort murali
Ist es, dass BinaryWriter Filestream und kann nicht verwendet werden, zur gleichen Zeit? Zum Beispiel, ein streamwriter und ein streamreader können nicht gleichzeitig aufgerufen werden, die auf die gleiche Datei. Allerdings ist dies nicht sinnvoll, so weit ich weiß, sollte es in diesem Fall nicht. Vielleicht schließen Sie br?
InformationsquelleAutor der Antwort Bloodyaugust
Versuchen Entsorgung Ihrer BinaryWriter-Objekt, bevor Sie die Kopie.
InformationsquelleAutor der Antwort Steve Danner
Ist es ein Prozess im hintergrund, wie antivirus-oder Datei-system der Indizierung sperren der Datei nur lange genug, um Probleme mit Ihrer Anwendung? Versuchen Sie, Pause für 3 Sekunden, um zu sehen, ob Ihr problem verschwindet.
InformationsquelleAutor der Antwort bluecoder
Das war, was ich gemacht habe:
dann verwenden
stream
Objekt, wo immer Sie wollen.InformationsquelleAutor der Antwort hakan
Ich scheinen, begegnen Sie dies nur, nachdem ich veröffentlicht habe einer Anwendung. Wenn Sie das Meldungsfeld schließen, und versuchen Sie es erneut, um zu Debuggen, wird nichts passieren.
MS Hilfe sagt, um alle die Art und Weise, die außerhalb von Visual Studio und starten Sie es. Es ist einfacher, um den Task-manager und beenden Sie den Prozess. Sein name wird der name der Lösung, gefolgt von ".vshost" (z.B. Projekt-name: PLC.sln; Prozess-name: PLC.vshost.exe). Der Prozess wird automatisch neu gestartet. In Windows 7 konnte man in der Regel, dass etwas geschehen würde, wenn das beenden eines Prozesses. Aber in 10 der Task-Manager-Fenster selten ändert.
Ich bekomme diese Meldung, wenn ich versuche, testen Sie ein Programm nach dem code ändern. Anscheinend ist der .exe wird nicht geschlossen, wenn man nicht mehr Debuggen, und der Fehler tritt auf, wenn VS versucht zu schreiben, ein neu erfüllt exe-Datei. Manchmal habe ich den Prozess beenden zweimal, um zu halten die Fehlermeldung zurück kommt. (Ich habe die Begegnung mit der Fehler zweimal; Prozess beenden zweimal und dann erneut ausführen hilft nicht.)
Dies ist ein bug in Visual Studio.
InformationsquelleAutor der Antwort Jon Boy