Problème avec FileSystemWatcher

Résolu
slytek Messages postés 16 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 10 janvier 2009 - 18 déc. 2008 à 17:52
slytek Messages postés 16 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 10 janvier 2009 - 22 déc. 2008 à 10:43
Bonjour, voici tout d'abord le code qui pose problème :
       
         static void main(string[] args)
        {
            FileSystemWatcher watcher = new FileSystemWatcher();
            watcher.Path = @"C:\try";
            watcher.Created += new FileSystemEventHandler(watcher_Created);
            watcher.EnableRaisingEvents = true;
            DirectoryInfo mydir = new DirectoryInfo(@"C:\try\obj");
            mydir.Create();

        }

        static void watcher_Created(Object sender, FileSystemEventArgs e)
        {
            Console.WriteLine("Nouveau repertoire !  : " + e.Name);
        }

En fait j'aimerai que la fonction watcher_Created soit lancée mais ce n'est pas le cas alors qu'un dossier est bien crée avec "mydir.Create()" et que "watcher.EnableRaisingEvents" est bien sur "True"

D'ou cela peut venir

Cordialement

5 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
21 déc. 2008 à 12:55
Salut,

Le problème est ici lié à l'application de test : elle se termine juste après l'exécution de "mydir.Create();", donc l'event n'a sans doute pas le temps d'être levé et traité.

/*
coq
MVP Visual C#
CoqBlog
*/
3
slytek Messages postés 16 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 10 janvier 2009
19 déc. 2008 à 21:27
Personne ne sais pour mon problème ? manque t-il des précisions ?

Cordialement
0
slytek Messages postés 16 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 10 janvier 2009
22 déc. 2008 à 00:12
Oui c'est exactement ça, merci !
J'ai testé en faisant une boucle a  2000 0000 d'itérations (hum, un peu bourrin) et la l'event a le temps d'être traité

Cordialement
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
22 déc. 2008 à 00:29
Oui, dans le cas présent un blocage du thread courant pour quelques secondes aurait été moins violent pour tester, via
System.Threading.Thread.Sleep(5000);
ou
System.Threading.Thread.CurrentThread.Join(5000);
par exemple, pour une pause de 5 secondes.

/*
coq
MVP Visual C#
CoqBlog
*/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
slytek Messages postés 16 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 10 janvier 2009
22 déc. 2008 à 10:43
Merci c'est vrai que ta méthode est mieux, même si je ne connais pas les thread encore.

Cordialement
0
Rejoignez-nous