Ihre beste Option ist hier, die CreateNew Option zu verwenden, wenn Sie die Datei zum Schreiben öffnen.
Es gibt keine einfache Möglichkeit, die Existenz einer Datei auf der Festplatte zu überprüfen. Das einzige, was Sie überprüfen können, ist, ob eine Datei verwendet wird oder nicht auf dem Datenträger vorhanden ist, auf den der Prozess mindestens eine eingeschränkte Form des Zugriffs hat.
Auch wenn Sie alle Zugriffe auf eine Datei von Ihrer Anwendung aus steuern, können Sie nicht zuverlässig verhindern, dass eine andere Anwendung die Datei erstellt/löscht. Selbst mit ausreichenden Sperren auf Dateisystemebene können Benutzer ruchlose Dinge tun, wie beispielsweise einen USB-Stick aus dem Computer nehmen.
Der beste Weg, um diese Art von Problem zu nähern, ist die Verwendung offener Optionen wie CreateNew.Dadurch kann die Operation nur erfolgreich ausgeführt werden, wenn die Datei zum Zeitpunkt der Erstellung nicht existiert. Sie können die Ausnahme zu diesem Zeitpunkt abfangen und versuchen, daraus abzuleiten, ob sie von der vorhandenen Datei oder einer anderen ungültigen Zugriffsausnahme stammt.
Methoden wie File.Exist ein falsches Gefühl der Sicherheit zu Ihrer Code-Basis geben und eng am Check-in überprüft werden sollte.
die Datei eine Semaphore, warum so viel Streit? – DevelopingChris
DevelopingChris: Nein, ich möchte es nicht versehentlich überschreiben, da es eine Chance gibt, dass mein Zufallsgenerator (Zufallsgenerator) aufgrund von Multicores und Synchronisation dieselben IDs erzeugt. –
Siehe auch http://StackOverflow.com/questions/425956/ How-Do-I-Ermitteln-wenn-eine-Ausnahme-ist-geworfen-wegen-einer-Freigabe-Verletzung. Die angenommene Antwort hat einen sehr nützlichen Link. – finnw