L'API Windows sous-jacente qui fait fonctionner FileSystemWatcher est ReadDirectoryChangesW(). Notez le 2ème argument, lpBuffer. C'est une correspondance biunivoque avec le tampon interne dont vous pouvez définir la taille avec la propriété InternalBufferSize.
Un tampon est requis car Windows ne peut pas exécuter facilement le code utilisateur en réponse aux modifications de répertoire. Ces modifications sont détectées par les pilotes de système de fichiers respectifs, ils s'exécutent en mode noyau. Le code de mode utilisateur en cours d'exécution nécessite un commutateur de mode coûteux et un commutateur de contexte de thread, beaucoup trop coûteux pour chaque changement détecté. Le tampon est là pour collecter les modifications, attendre le démarrage du code du mode utilisateur et vider le tampon.
Il existe un mode de défaillance bien documenté pour FSW, il pourrait y avoir trop de changements à suivre. Vous verriez l'événement Error dans le code managé. Augmenter la taille de la mémoire tampon peut aider, beaucoup, le tampon par défaut est plutôt petit à 4096 octets. Le rendre arbitrairement grand n'est pas une bonne idée cependant, l'espace tampon est également requis dans le noyau et cela est pris dans le pool de mémoire du noyau. C'est une ressource limitée, engloutir de grandes quantités du pool affecte tous les programmes en cours d'exécution sur la machine.
+1, meilleure réponse que la mienne =) –