You would call ReadDirectoryChangesW in such a way that it returns its results asynchronously if you ever needed to prevent the calling thread from blocking. Tautology, but true.
Candidates for such streams are the user interface thread and any thread that is solely responsible for serving several resources (sockets, any IPC types, independent files, etc.).
Not familiar with the project, I think that CDirectoryChangeWatcher doesn't care if its workflow is blocking. This is typically the nature of workflows.
source share