Weiß jemand, warum manchmal eine Directory.Move()
Operation in C# hängt/wartet, anstatt sofort eine Ausnahme zu werfen?C# Move-Vorgang hängt, anstatt Ausnahme sofort zu werfen
Zum Beispiel:
Wenn ich die Directory.Move()
Methode in einem try
Block verwenden, navigieren Sie zu dem Ordner in der Datei-Explorer erstellt Windows einige Griffe Verriegelungs es.
Dann erwarte ich, dass der catch-Block sofort ausgeführt wird, aber stattdessen ist es wie die Anwendung nur für 10-15 Sekunden hängt, bevor es eine Ausnahme auslöst.
Die lustige Sache ist, dass, wenn ich außerhalb des Ordners im Datei-Explorer während dieser 10-15 Sekunden gehen, dann die Anwendung tatsächlich die Move()
Operation abgeschlossen.
Es ist wie: Anstatt eine Ausnahme sofort zu werfen, hängt Windows 10-15 Sekunden, um zu sehen, ob die Personen, die für die Handles (Sperren) verantwortlich sind, diese Handles selbst schließen.
Gibt es eine Möglichkeit, die Anwendung sofort die Ausnahme zu werfen?
können Sie einen Code bereitstellen? – Usman
Das klingt wie Windows versucht, fehlgeschlagen, warten und erneut versuchen, bevor die Ausnahme – Shon
wirft es scheint es wartet einfach auf die Dateiobjekt-Handles entsperrt werden. Wenn Datei/Ordner "in Verwendung" ist, ist sie nicht löschbar, aber Sie können nie garantieren, dass die Plattform sofort abbricht. es kann einen Moment warten und erst nach einer gewissen Zeit abbrechen. Ich bin ziemlich sicher, dass hängt von der Windows-Version, Dateisystem-Typ, Registry-Treiber-Einstellungen, und - auch - jede aufdringliche Software wie Antivirenprogramme/Beobachter/Monitore/etc können auch das beeinflussen – quetzalcoatl