Il existe de nombreux articles sur Internet à propos des fichiers manquants de la fonction API ReadDirectoryChangesW lorsqu'il y a beaucoup d'activité de fichier. La plupart reprochent la vitesse à laquelle la boucle de la fonction ReadDirectoryChangesW est appelée. C'est une supposition incorrecte. La meilleure explication que je l'ai vu est dans le post suivant, le commentaire le lundi 14 Avril, 2008 14:15:27Comment empêcher les modifications de fichiers manquantes dans ReadDirectoryChangesW
http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/4465cafb-f4ed-434f-89d8-c85ced6ffaa8/
Le résumé est que le fichier des rapports de fonction ReadDirectoryChangesW changements lorsqu'ils quittent la File-Write-derrière la file d'attente, pas comme ils sont ajoutés. Et si un trop grand nombre est ajouté avant d'être commis, vous perdez l'attention sur certains d'entre eux. Vous pouvez le voir avec votre implémentation, si vous écrivez simplement un programme pour générer rapidement plus de 1000 fichiers dans un répertoire. Il suffit de compter le nombre d'avis d'événements de fichiers que vous obtenez et vous verrez qu'il y a des moments où vous ne les recevrez pas tous.
La question est, quelqu'un a trouvé une méthode fiable pour utiliser la fonction ReadDirectoryChangesW sans avoir à vider le volume à chaque fois? Cela n'est pas autorisé si l'utilisateur n'est pas administrateur et peut également prendre un certain temps pour terminer.
Cela fonctionnerait pendant environ 99% du temps. Que se passe-t-il si un fichier dans un autre répertoire (autre que celui ayant beaucoup de modifications de fichier) est celui qui est ignoré? Vous devez scanner le répertoire pour les changements mais manquer le changement de fichier unique dans un autre. –
La classe FileSystemWatcher est un moyen .NET d'envelopper ReadDirectoryChangesW, donc non, cela n'aide pas. – Garen
Ma réponse était plus sur la détection du nombre d'événements dans un laps de temps pour déclencher la solution de contournement pour ReadDirectoryChangesW. – hova