FileSystemWatcher et son buffer [C#] - C#/.NET managed - Programmation
Marsh Posté le 01-03-2007 à 15:28:50
Personne ne sait si on peut controler le FSW ? Ou comment accéder à son buffer ?
Marsh Posté le 01-03-2007 à 18:07:06
Il te suffit de ne pas deplacer file2 quand tu traites file1
Marsh Posté le 02-03-2007 à 15:16:11
Merci pour cette réponse pleine de bon sens...
Je ne peux pas faire autrement.
D'autres idées ?
Marsh Posté le 02-03-2007 à 15:47:44
(par exemple)
Code :
|
Marsh Posté le 02-03-2007 à 15:55:50
T'ain, effectivement, je comprends ton problème : File.Delete() (.Move() aussi certainement) est assynchrone. Du coup tu dis que les effacter, mais le File.Exists() les détecte encore ! Trop de la balle
Marsh Posté le 02-03-2007 à 15:58:18
C'est gore, mais ça marche
Code :
|
Marsh Posté le 27-02-2007 à 16:46:07
Salut à tous,
J'ai un gros souci avec le FilesystemWatcher, pouvez-vous m'aider ?
Mon soft scan un répertoire pour faire un traitement sur chaque nouveau fichier créé qu'il déplace dans un répertoire de backup une fois le traitement fini.
Le FileSystemWatcher(FSW) stocke en mémoire tous les fichiers nouvellement créés et appel ma fonction au fur et à mesure.
Disons qu'il stock dans un tableau les nouveaux fichiers {file1, file2, file3, ...}
le FSW appelle ma fonction en lui donnant file1, attends la fin du traitement, appelle ma fonction avec file2....etc.
Le problème, c'est que parfois mon traitement a besoin de 2 fichiers et vas les déplacer en même temps.
C'est là qu'est le problème, car si je déplace un fichier présent dans la liste du FSW avant que celui-ci ne me l'ait donné, il plante mon programme à ce moment-là.
Plus concrètement
-> 3 nouveaux fichiers sont crées
-> le FSW stocke le nom des 3 fichiers {file1, file2, file3}
-> le FSW -> ma_fonction( file1 )
-> je traite file1, j'ai besoin de file2, file2 existe donc je fais mon traitement et déplace file1 et file2
-> le FSW plante car il veut me donner file2 mais ce fichier n'existe plus.
Comment faire pour lui dier de passer à file3 si file2 n'existe pas ?