Detectando arquivos movidos usando o FileSystemWatcher

Eu percebo que FileSystemWatcher não fornece um evento Move, em vez disso, ele irá gerar um separado Excluir e criar eventos para o mesmo arquivo. (O FilesystemWatcher está assistindo as pastas de origem e destino).

No entanto, como podemos diferenciar entre um verdadeiro movimento de arquivo e alguma criação aleatória de um arquivo que por acaso tenha o mesmo nome de um arquivo que foi excluído recentemente?

Algum tipo de propriedade da classe FileSystemEventArgs, como "AssociatedDeleteFile", que é atribuído ao caminho do arquivo excluído, se for o resultado de um movimento, ou NULL, seria ótimo. Mas é claro que isso não existe.

Também entendo que o FileSystemWatcher está operando no nível básico do sistema de arquivos e, portanto, o conceito de "Mover" pode ser significativo apenas para aplicativos de nível superior. Mas se esse for o caso, que tipo de algoritmo as pessoas recomendariam para lidar com essa situação em meu aplicativo?

Atualizar com base no feedback:

A classe FileSystemWatcher parece ver a movimentação de um arquivo como simplesmente dois eventos distintos, um Delete do arquivo original, seguido por um Create no novo local.

Infelizmente, não há "link" fornecido entre esses eventos, portanto, não é óbvio como diferenciar entre um movimento de arquivo e um Excluir ou Criar normal. No nível do SO, um movimento é tratado especialmente, você pode mover um arquivo de 1 GB quase instantaneamente.

Algumas respostas sugeriram o uso de um hash em arquivos para identificá-los de forma confiável entre os eventos, e vou adotar essa abordagem. Mas se alguém souber como detectar um movimento de maneira mais simples, por favor deixe uma resposta.

questionAnswers(5)

yourAnswerToTheQuestion