Ich habe ein Singlethread-Programm, das Ordner und Dateien in einem Quellverzeichnis verarbeitet. Gibt es eine Möglichkeit, einen Ordner mit darin enthaltenen Dateien in meinem Quellverzeichnis daran zu hindern, von anderen Prozessen geändert zu werden, während mein Programm daran arbeitet? Ich denke an etwas, das eine Art exklusive Sperre für den Ordner selbst darstellt, so dass er nur vom Programm meines Programms verwendet werden kann. nur was Ordner (n), in der obersten Ebene des Verzeichnisses, ich könnte die Verarbeitung zu einem bestimmten ZeitpunktC# - Blockieren eines Ordners vor der Änderung während der Verarbeitung
Ich will nicht das Root-Quellverzeichnis selbst blockieren:
HINWEIS. Ich möchte immer noch zulassen, dass externe Prozesse Ordner zum Quellverzeichnis hinzufügen können, während ich andere Ordner verarbeite.
UPDATE:
@Yuri - Ja, das ist ein Windows-Programm, eine Anwendung Windows-Dienstes genau zu sein.
Ein Teil von dem, was dies sowohl schwierig als auch notwendig macht, ist, dass ich die Struktur der Ordner, die ich verarbeite, im Quellverzeichnis in einem separaten Zielverzeichnis neu erstellen muss. Ich kann also keinen anderen Prozess haben, der Ordner und Datei (en) verändert, während mein Programm damit arbeitet.
Ich gehe von Windows aus? –
Ich frage mich, ob die neuen I/O-Transaktionsmethoden helfen könnten. – user7116
Anstatt den Ordner zu sperren, könnte Ihr Programm den Inhalt nur ein zweites Mal durchsehen, um sicherzustellen, dass es seit dem Start keine externen Änderungen gegeben hat (Überprüfung von Dateinamen und Daten). – Justin