How do I detect when a directory or file changes without constant scanning

Use the FileSystemWatcher class – it does what you want. It won’t tell you which bytes in the file changed, but it will tell you which files have changes.

From the doc:

Use FileSystemWatcher to watch for
changes in a specified directory. You
can watch for changes in files and
subdirectories of the specified
directory. You can create a component
to watch files on a local computer, a
network drive, or a remote computer.

To watch for changes in all files, set
the Filter property to an empty string
(“”) or use wildcards (“.“). To
watch a specific file, set the Filter
property to the file name. For
example, to watch for changes in the
file MyDoc.txt, set the Filter
property to “MyDoc.txt”. You can also
watch for changes in a certain type of
file. For example, to watch for
changes in text files, set the Filter
property to “*.txt”.

There are several types of changes you
can watch for in a directory or file.
For example, you can watch for changes
in Attributes, the LastWrite date and
time, or the Size of files or
directories. This is done by setting
the NotifyFilter property to one of
the NotifyFilters values. For more
information on the type of changes you
can watch, see NotifyFilters.

You can watch for renaming, deletion,
or creation of files or directories.
For example, to watch for renaming of
text files, set the Filter property to
“*.txt” and call the WaitForChanged
method with a Renamed specified for
its parameter.

Leave a Comment