Probleme mit Dateilöschen und anderen Prozessen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von jan99.

    Probleme mit Dateilöschen und anderen Prozessen

    Moin!

    ich habe eine Funktion bei der u.a. eine Datei gelöscht werden soll.

    Hierzu verwende ich den Befehl

    VB.NET-Quellcode

    1. System.IO.File.Delete(Path)


    Das wird nur den Fehler aus:


    System.IO.IOException: Der Prozess kann nicht auf die Datei "\\ma22-st-001\abteilung$\EBL\PLNB\GKG\Grundstücke\M\Mengstraße\Mengstraße 006\03 Fotos allgemein\Testbild_Jan.jpg" zugreifen, da sie von einem anderen Prozess verwendet wird. bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) bei System.IO.File.InternalDelete(String path, Boolean checkHost) bei System.IO.File.Delete(String path) bei EBL.FileAndFolder.FolderAndFile.DeleteFile(String Path, Boolean SilentMode, String& ErrMsg, Log& Log) in C:\VSProjects\2015\EBL.FileAndFolder\EBL.FileAndFolder\cls_FolderAndFile.vb:Zeile 395.(vorhandene ZIEL-Datei konnte nicht gelöscht werden!)


    Die zu löschende Testdatei wurde von mir erstellt etc. und vorab vielleicht noch von einem zwischenzeitlich beendeten Skript dahin kopiert. Auch bei mir ist kein Brower und betrachter offen der diese Datei verarbeiten könnte.

    Ich halte es auch für ausgeschlossen, dass andere darauf zugreifen.

    Kann man irgendwie feststellen wer auf diese Datei zugreift oder könnte man irgendwie das Löschen doch erzwingen?

    Wenn ich im Explorer die Datei lösche - kein Problem.

    Irgendwie komme ich einfach nicht weiter!

    Gruß Jan

    Nachtrag:
    habe das noch einmal mit Überschreiben durch eine andere Datei versucht mit

    VB.NET-Quellcode

    1. System.IO.File.Copy(PfadQuell, PfadTarget, True)


    und da bekomme ich auch die Meldung, das ein anderer Prozess darauf zugreift und deshalb das Überschreiben wohl nicht klappt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „jan99“ ()

    @jan99 Du hast wohl eine Bitmap-Instanz mit dieser Datei offen.
    Wenn Du Dir die Bitmap-Instanz über einen FileStream der Datei generierst, kannst Du sie löschen.
    Gugst Du msdn.microsoft.com/de-de/library/z7ha67kw(v=vs.110).aspx
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin!

    processmon ist bekannt!

    Zwar nicht am Rechner, aber RodFromGermany sein Ansatz wird es sein. Er weiß noch aus dem Posting zuvor, das ich die Bildgröße bei jpg ermittelt habe - die Instanz wird es wohl noch sein.

    Da hätte ich mich totgesucht!

    Gruß Jan
    Moin!

    das war es - jetzt in ein USING eingefasst und dann hat es funktioniert.

    VB.NET-Quellcode

    1. Using ImgProj As New Bitmap(QuellDateiPfad)
    2. ImgHoeheProj = ImgProj.Height
    3. ImgBreiteProj = ImgProj.Width
    4. End Using 'ImgProj
    5. Using ImgKat As New Bitmap(ZielDateiPfad)
    6. ImgHoeheKat = ImgKat.Height
    7. ImgBreiteKat = ImgKat.Width
    8. End Using 'ImgKat


    Gruß Jan