Istnieje wiele postów w Internecie na temat funkcji ReadDirectoryChangesW funkcji brakujących plików, gdy istnieje wiele działań plików. Najbardziej obwinia szybkość, z jaką wywoływana jest pętla funkcji ReadDirectoryChangesW. To błędne założenie. Najlepszym wyjaśnieniem Widziałem to w następnym poście, komentarz w poniedziałek, 14 kwietnia 2008 14:15:27Jak zachować ReadDirectoryChangedW z brakujących zmian w plikach
http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/4465cafb-f4ed-434f-89d8-c85ced6ffaa8/
Podsumowanie to, że raporty funkcyjne ReadDirectoryChangesW zmian plików jak oni opuścić kolejka write-behind za, a nie po dodaniu. A jeśli zbyt wiele zostanie dodanych przed popełnieniem, tracisz uwagę na niektórych z nich. Możesz to zobaczyć ze swoją implementacją, jeśli po prostu napisz program, który wygeneruje ponad 1000 plików w katalogu naprawdę szybko. Po prostu policz, ile dostaniesz powiadomień o zdarzeniach, a zobaczysz, że są chwile, kiedy nie otrzymasz ich wszystkich.
Pytanie brzmi, czy ktoś znalazł niezawodną metodę używania funkcji ReadDirectoryChangesW bez konieczności przepłukiwania woluminu za każdym razem? Jest to niedozwolone, jeśli użytkownik nie jest administratorem i może również potrzebować trochę czasu.
To działałoby przez około 99% czasu. Co się stanie, jeśli plik w innym katalogu (innym niż ten, który ma wiele zmian w pliku) jest tym, który jest pomijany. Skanowałbyś jeden katalog pod kątem zmian, ale tęskniłeś za zmianą pojedynczego pliku w innym. –
Klasa FileSystemWatcher jest metodą .NET do zawijania ReadDirectoryChangesW, więc nie, to nie pomaga. – Garen
Moja odpowiedź polegała bardziej na wykryciu # zdarzeń w okresie czasu, aby wyzwolić obejście ReadDirectoryChangesW. – hova