FileSystemWatcher no informa los cambios en un archivo bloqueado

Estoy monitoreando una carpeta usando un FileSystemWatcher como este:

watcher = new FileSystemWatcher(folder);
watcher.NotifyFilter = NotifyFilters.Size;
watcher.Changed += changedCallback;

Cuando abro un nuevo archivo en el bloc de notas en esa carpeta y lo guardo, recibo una notificación. Si sigo escribiendo y luego guardo, recibo una notificación. Si cierro el archivo al guardarlo, recibo una notificación. Exactamente lo que quería.

Sin embargo, resulta que si creo un archivo en esa carpeta y configuro su modo de uso compartido en FileShare.Read, y luego le escribo, no recibiré ninguna notificación hasta que se cierre el archivo. Otra solución es abrir el archivo (por ejemplo, en el Bloc de notas), lo que aparentemente hace que se actualice su estado, y luego mi aplicación de monitoreo recibe la notificación. Otra solución alternativa es una actualización que puedo hacer en el Explorador de Windows, lo que nuevamente hace que se actualice el estado del archivo.

Curiosamente, si miro el Explorador de Windows mientras hago los cambios, noto que:

Si el archivo se comparte para leer y escribir, su tamaño se actualizará inmediatamente en el Explorador de Windows tan pronto como lo guarde.Si el archivo se comparte solo para lectura, su tamaño NO se actualizará inmediatamente en el Explorador de Windows, a menos que actualice manualmente la ventana.

Parece que mi aplicación de monitoreo comparte el mismo comportamiento que el Explorador de Windows. Estaba pensando en ejecutar un hilo que simplemente escanee los archivos en la carpeta, pero me pregunto si hay algo más elegante que hacer en este caso.

Por cierto, estoy usando Win7 y no estoy seguro de que este problema también ocurra en otras versiones de Windows.

¡Gracias!

EDITAR: El uso de ReadDirectoryChanges en C ++ me dio los mismos resultados exactos. Implementar el hilo del que hablé antes no ayudó también. Me pregunto qué está haciendo realmente F5 en el Explorador de Windows, porque hace que se informe el cambio.

Respuestas a la pregunta(6)

Su respuesta a la pregunta