Reliable way of monitoring file changes in a directory using the .NET framework
Asked Answered
H

1

5

I'm looking for a reliable way of looking for changes in a directory.

I have tried using the FileSystemWatcher, but it's rather inaccurate when many small files are created, changed or deleted. It misses about 1 or 2 % of the files in my tests. That is quite a lot when you are adding or changing thousands of files rapidly.

I have tried polling for changes at different intervals 500 ms, 2000 ms etc. In this case I get too many hits. That might have something to do with the resolution of timestamps on the FileInfo object.

So my question is; is it possible, using the .NET Framework, to get the the changes to a directory reliably?

-- Christian

Hoseahoseia answered 31/1, 2011 at 20:18 Comment(0)
U
7

Have you tried increasing the InternalBufferSize? What size have you set it to?

From MSDN:


Note that a FileSystemWatcher may miss an event when the buffer size is exceeded. To avoid missing events, follow these guidelines: Increase the buffer size by setting the InternalBufferSize property. Avoid watching files with long file names, because a long file name contributes to filling up the buffer. Consider renaming these files using shorter names.


Keep your event handling code as short as possible.

Unscathed answered 31/1, 2011 at 20:24 Comment(1)
Thank you, this seems to solve my problems for now. Can't make it miss files with a buffer of 64 KB, must run a few more tests to find the optimal settings.Hoseahoseia

© 2022 - 2024 — McMap. All rights reserved.