Partager via


Comment : attendre que des événements de système de fichiers spécifiés se produisent

Mise à jour : novembre 2007

En plus d'utiliser le composant FileSystemWatcher pour surveiller immédiatement un répertoire spécifique, vous pouvez utiliser la méthode WaitForChanged pour attendre qu'un événement particulier survienne et ensuite poursuivre l'exécution du thread. Par exemple, si vous utilisez une application de News Web, vous pouvez décider de créer une partie administrative dans le site, où les utilisateurs téléchargent leurs articles de News. Vous pouvez utiliser la méthode WaitForChanged pour surveiller ce répertoire jusqu'à ce que la date du dernier accès change, puis commencer à traiter le répertoire de News afin de rechercher de nouveaux articles.

Spécifiez le type de modification à surveiller en définissant la valeur d'une énumération WatcherChangeTypes. Les valeurs possibles sont Created, Changed, Renamed, Deleted, ou All. Si vous définissez la valeur All, toute modification apportée au répertoire sera surveillée. Vous pouvez également spécifier un délai d'attente si vous ne voulez pas dépasser un certain délai avant que l'événement ne se produise.

Cette méthode WaitForChanged retourne un objet de type WaitForChangedResult. Cette classe contient des informations spécifiques sur le type de modification qui a eu lieu dans le répertoire. Vous pouvez accéder à des informations telles que Name, OldName et TimedOut sur l'objet pour en savoir plus sur la modification.

WaitForChanged est une méthode synchrone. Lorsque vous l'utilisez dans une application Windows, l'application ne répond pas si la méthode est utilisée sur le thread de l'interface utilisateur plutôt que sur le thread de travail. Pour plus d'informations sur les problèmes de threads en Visual Basic, consultez Multithreading dans Visual Basic.

Pour attendre des modifications

  1. Créez et configurez votre instance de composant FileSystemWatcher afin d'indiquer le répertoire à surveiller. Pour plus d'informations, consultez Comment : créer des instances du composant FileSystemWatcher ou Comment : configurer des instances du composant FileSystemWatcher.

  2. Dans l'éditeur de code, créez une instance de la classe WaitForChangedResult.

    Dim result As System.IO.WaitForChangedResult
    
     System.IO.WaitForChangedResult result;
    
  3. Dans votre instance du composant FileSystemWatcher, spécifiez le type d'événement qu'il doit attendre en indiquant, pour la propriété WaitForChanged, une des valeurs de l'énumération WatcherChangeTypes.

    fileSystemWatcher1.WaitForChanged(System.IO.WatcherChangeTypes.All)
    
         fileSystemWatcher1.WaitForChanged(System.IO.WatcherChangeTypes.All);
    
    Conseil :

    Vous pouvez utiliser une forme surchargée de la méthode WaitForChanged pour spécifier un délai d'attente comme second paramètre.

  4. Spécifiez les actions à exécuter lorsque la modification que vous surveillez survient. Pour plus d'informations, consultez Comment : créer des gestionnaires pour les événements de système de fichiers.

    Le code suivant montre comment avertir un utilisateur qu'un fichier doit être supprimé et ensuite attendre le déclenchement de l'événement Deleted. Ce code surveille le dossier personnel de l'utilisateur.

    Console.WriteLine("Please delete OldNote.txt.")
    Dim directory As String
    directory = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
    Dim watcher As New System.IO.FileSystemWatcher(directory, "OldNote.txt")
    result = watcher.WaitForChanged(System.IO.WatcherChangeTypes.Deleted)
    Console.WriteLine("Thanks for deleting OldNote.txt.")
    
         Console.WriteLine("Please delete OldNote.txt.");
            string directory =
               Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            System.IO.FileSystemWatcher watcher =
               new System.IO.FileSystemWatcher(directory, "OldNote.txt");
            result = watcher.WaitForChanged(System.IO.WatcherChangeTypes.Deleted);
            Console.WriteLine("Thanks for deleting OldNote.txt.");
    

Voir aussi

Tâches

Comment : créer des instances du composant FileSystemWatcher

Comment : configurer des instances du composant FileSystemWatcher

Comment : créer des gestionnaires pour les événements de système de fichiers

Concepts

Introduction à la surveillance des événements de système de fichiers