Po usunięciu pliku przy użyciu klasy system.io.file:Jak sprawdzić, czy System.IO.File.Delete usunięty plik z powodzeniem
System.IO.File.Delete(openedPdfs.path);
trzeba uruchomić jakiś kod, jeśli plik został pomyślnie usunięty . Dopóki metoda nie zwraca żadnej wartości, sprawdzam, czy plik istnieje po metodzie usuwania. Jeśli to nadal istnieje, przypuszczam, że operacja się nie udała.
Problem polega na tym, że metoda usuwania działa dobrze, ale do pliku, który ma zostać usunięty, jest kilka sekund. Funkcja Exist zwraca true, ponieważ w momencie sprawdzania plik istnieje.
Jak mogę sprawdzić na pewno, czy pomyślnie zakończono System.IO.File.Delete(openedPdfs.path);
?
Kod:
FileInfo file = new FileInfo(openedPdfs.path);
System.IO.File.Delete(openedPdfs.path);
if (file.Exists == false)
{ ... }
else
{ ... }
„Najbardziej elegancki sposób mogę myśleć jest przy użyciu [FileSystemWatcher] (http: // MSDN. microsoft.com/en-us/library/system.io.filesystemwatcher.aspx) i zasubskrybuj wydarzenie "Deleted". " http://stackoverflow.com/questions/9370012/waiting-for-system-to-delete-file –
Czy martwisz się przypadkiem, gdy usuwanie się powiedzie, ale nowy plik o tej samej nazwie zostanie utworzony przed sprawdzeniem na istnienie? – HABO
@ TimSchmelter FileSystemWatcher został zgłoszony do upuszczania zdarzeń pod obciążeniem. Niektórzy sugerują, że można go użyć, aby poprawić czas reakcji, ale wciąż odpytywali z mniejszą częstotliwością, aby nie przegapić wydarzeń. FSW może również zmniejszyć wydajność, szczególnie jeśli filtry są niepotrzebnie zgrubne. –