2011-11-07 3 views
0

J'ai une question à propos de l'événement de fichier en mouvement sur la classe filesystemwatcher, je voudrais arrêter le déplacement du fichier ou l'éditer quand l'événement de fichier en mouvement survient pour un certain fichier, est-ce possible? l'événement en mouvement? Non, il n'est pas possible d'empêcher quelqu'un de déplacer ou de renommer un fichier en utilisant la classe FileSystemWatcherC#: classe filesystemwatcher

Répondre

2

Si vous regardez, aucun des arguments d'événement transmis par les événements de la classe FileSystemWatcher n'a une propriété Cancel. De plus, le fait que la classe s'appelle simplement Watcher est un peu un indice.

Vous pouvez envisager d'utiliser des listes de contrôle d'accès pour vous assurer que quelqu'un ne peut pas supprimer un fichier (car un déplacement n'est en fait qu'une simple copie/suppression). Ou peut-être pourriez-vous essayer d'ouvrir un FileStream sur le fichier afin de le verrouiller.

2

Vous ne pouvez pas "annuler" directement l'opération à l'aide du gestionnaire d'événements. Vous devez fournir une opération de compensation pour "annuler" les modifications que vous souhaitez annuler.

1

Vous recevez uniquement les événements après que le fait s'est produit. C'est une simple notification, pas un événement que vous auriez à approuver. Cela peut également être deviné à partir de la propriété Cancel ou Handled manquant dans la classe FileSystemEventArgs (par opposition à, par exemple, la classe KeyEventArgs).

Vous pouvez détecter un déplacement et essayer de déplacer le fichier, en fonction de la propriété OldFullPath du RenamedEventArgs que vous recevez.

Ceci peut toutefois être déroutant pour vos utilisateurs ou pour d'autres logiciels. Et essayez de ne pas vous retrouver dans une boucle infinie, où vous déplacez le fichier d'avant en arrière chaque fois que vous recevez l'événement.