Bonjour,
J'aimerais savoir s'il est possible d'implémenter un système de notification quand une application ferme un fichier.
Je m'explique ; je développe une application qui écoute les modifications appliquées à certains fichiers. Pour ce faire j'utilise un FileSystemWatcher. Dès qu'il repère une modification, la méthode OnChanged s'exécute. Celle-ci va tenter d'ouvrir le fichier pour en récupérer le FileStream.
Evidemment, l'ouverture génère une IOException dans le cas où le fichier est déjà ouvert par une autre application et que celle-ci ne permet pas le FileShare.
C'est le cas par exemple de Word qui, visiblement, garde le fichier ouvert jusqu'à ce qu'on le quitte. Le problème est donc le suivant : A chaque sauvegarde effectuée dans Word, le FileSystemWatcher exécute la méthode OnChanged mais celle-ci ne peut ouvrir le fichier car déjà utilisé par Word (IOException). Il faut donc attendre que Word ferme le fichier, c'est à dire que Word soit lui même fermé par l'utilisateur.
Pour ce faire, il y a bien sûr la solution de faire une boucle sur un try catch de l'ouverture du fichier avec dans le catch un sleep d'un certain temps, mais cette solution n'est pas très propre. N'y a-t-il pas moyen de se mettre en attente sur le fichier et que celui-ci notifie mon application quand il est devenu accessible ? A ma connaissance non, mais je pose tout de même la question. Peux-être y a-t-il moyen de demander au système d'exploitation de surveiller un fichier et de prévenir une application quand celui-ci est fermé.
Merci d'avance pour vos réponses =)
Partager