Warten für das system zu löschen die Datei

Hatte ich ein problem mit erfrischenden Dateiliste nach dem löschen einer Datei. Wenn ich gab Befehl zum löschen der Datei, die exception geworfen wurde, weil die refresh-Methode versucht auf eine Datei zuzugreifen, wurde die gelöscht werden soll.

Nach einiger überlegung und debugging kam ich zu dem Schluss, dass problem war in der Tat, das system braucht einige Zeit, um eine Datei zu löschen. Und ich löse es wie folgt:

//Deleting file
System.Threading.Thread.Sleep(2000);
//Refreshing list

und es funktionierte gut.

Meine Frage ist

Gibt es eine elegantere Möglichkeit zu warten, für system tun, löschen Sie die Datei und fahren Sie dann mit code...?

  • Können wir sehen, der rest des code aus? Auch, welche Art von Dateisystem (lokales NTFS oder irgendeine form von NFS)? Die meisten filesystem delete-Operationen, die auf NTFS sowieso, sind atomar.
  • Es ist auf NTFS. Welchen Teil des Codes, die Sie interessieren. Delete-Methode rekursiv löscht alle Dateien im Verzeichnis und das Verzeichnis selbst. Ich hätte nicht gedacht, dass das relevant ist, so sagte ich, dass ich brauchen, um eine Datei zu löschen ... Es ist die gleiche Sache, nicht wahr?
  • Überhaupt nicht. Ich lasse eine Antwort
  • Bitte Lesen Sie meine post, ich gerade aktualisiert die MSDN-link von FileSystemWatcher zu zeigen .NET 4.0 anstelle von 1.1
InformationsquelleAutor kr85 | 2012-02-20
Schreibe einen Kommentar