Datei wird von einem anderen Prozess verwendet in c#

Ich versuche, eine Datei zu löschen, die in C#, aber ich erhalte eine Meldung, dass die Datei von einem anderen Prozess verwendet. Was ich tun möchte, ist zu überprüfen, ob die Dateien vorhanden ist, und schließen Sie es. Ich benutze folgende Funktion, um zu überprüfen, ob die Datei geöffnet ist:

public static bool IsFileInUse(string path)
    {
        if (string.IsNullOrEmpty(path))
            throw new ArgumentException("'path' cannot be null or empty.", "path");

        try
        {
            using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read)) { }
        }
        catch (IOException)
        {
            return true;
        }

        return false;
}

und ich bin versucht, wenn die Datei in Gebrauch ist, um es zu schließen:

bool checking = IsFileInUse(file );
File.Create(file ).Close();
if (File.Exists(file))
{
       File.Delete(file );
}

Bekam ich Probleme in der Datei.Linien -, ich erhalte die Meldung:

Datei wird von einem anderen Prozess verwendet wird.

EDIT: ich bin versucht, lock-Ansatz, um die Datei zu löschen. Ich nehme an, die Datei zu löschen innerhalb einer lock-Anweisung? Wie Kann ich richtig die lock-Anweisung?

Sie können nicht schließen Sie die Datei, die geöffnet wird, durch einen anderen Prozess durch alle straight-forward-Methode.
Also ich sollte den Prozess zu beenden, um die Datei zu schließen, richtig?
Ist, dass Ihre Anwendung? Wenn ja, dann können Sie Nachricht senden, um Sie freizugeben, oder verwenden Sie die inter-Prozess-lock
Was ist der andere Prozess, der es verwendet? Ist es Ihre app selbst?
Finden Sie eine Menge Artikel zu sperren, multi-threading, das ist, was msdn erzählen, sperren, msdn.microsoft.com/en-us/library/c5kehkcz.aspx

InformationsquelleAutor Jose Ramon | 2016-01-28

Schreibe einen Kommentar