2013-03-05 29 views
5

Pracuję nad projektem z bardzo dużą ilością plików modyfikowanych i tworzonych/usuwanych. Występują problemy z napełnianiem wielu buforów wewnętrznych FSW i konieczności ich rozbudowy.FileSystemWatcher.Filter - przed lub po buforze?

Znalazłem sprzeczne informacje online o tym, czy "Filtry" wykrywają BEFORE lub wykryte zmiany są dodawane do bufora. Jeśli rzeczywiście po jednym FSW z sortowania zdarzeń później może mieć więcej sensu.

Czy ktoś wie na pewno, co to jest?

Dzięki.

Odpowiedz

1

FileSystemWatcher zawija natywną metodę W32 ReadDirectoryChangesW, która z kolei jest odpowiedzialna za umieszczanie zdarzeń systemu plików w dostarczonym buforze. Właściwość Filter jest wymuszana po stronie CLR po tym, jak zdarzenie zostało już buforowane w prywatnej metodzie MatchPattern, która mówi monitorowi, czy zgłosić zdarzenie pliku, czy nie.

Korzystanie z właściwości Filter nie powinno pomóc w bieżącej sytuacji. Zamiast tego może być bardziej korzystne zwiększenie wartości InternalBufferSize, aby uniknąć przekroczenia bufora. Alternatywnie, istnieje wiele innych klas monitorowania zdarzeń systemu plików w sieci, które podjęły się rozwiązania tego samego problemu.