FileSystemWatcher não relata alterações em um arquivo bloqueado

Estou monitorando uma pasta usando um FileSystemWatcher como este:

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

Quando abro um novo arquivo no bloco de notas nessa pasta e o salvo, recebo uma notificação. Se eu continuar escrevendo e depois salvar, recebo uma notificação. Se eu fechar o arquivo ao salvá-lo, recebo uma notificação. Exatamente o que eu queria.

No entanto, acontece que, se eu criar um arquivo nessa pasta e definir seu modo de compartilhamento como FileShare.Read, e depois gravar nele, não receberei nenhuma notificação até que o arquivo seja fechado. Outra solução alternativa é abrir o arquivo (por exemplo, no Bloco de Notas), o que aparentemente faz com que seu estado seja atualizado e, em seguida, meu aplicativo de monitoramento recebe a notificação. Outra solução alternativa é uma atualização que posso fazer no Windows Explorer, que novamente faz com que o estado do arquivo seja atualizado.

Curiosamente, se eu olhar o Windows Explorer enquanto faço as alterações, aviso que:

Se o arquivo for compartilhado para leitura e gravação, seu tamanho será atualizado imediatamente no Windows Explorer assim que eu o salvar.Se o arquivo for compartilhado apenas para leitura, seu tamanho NÃO será atualizado imediatamente no Windows Explorer, a menos que eu atualize manualmente a janela.

Parece que meu aplicativo de monitoramento compartilha o mesmo comportamento do Windows Explorer. Eu estava pensando em executar um thread que apenas varreria os arquivos na pasta, mas estou pensando se há algo mais elegante para ser feito nesse caso.

BTW, estou usando o Win7 e não tenho certeza se esse problema ocorre em outras versões do Windows também.

Obrigado!

EDITAR: Usando ReadDirectoryChanges em C ++, obtive os mesmos resultados exatos. Implementar o segmento que eu estava falando anteriormente não ajudou muito. Gostaria de saber o que realmente está fazendo o F5 no Windows Explorer, porque faz com que a alteração seja relatada.

questionAnswers(6)

yourAnswerToTheQuestion