Condividi tramite


Procedura: attendere eventi specifici del file system

Aggiornamento: novembre 2007

Oltre al componente FileSystemWatcher che consente di eseguire il monitoraggio immediato di una specifica directory, è possibile utilizzare il metodo WaitForChanged per attendere che si verifichi un evento specifico e continuare con l'esecuzione del thread. Se, ad esempio, si utilizza un'applicazione relativa alle notizie basata su Web, sarà possibile creare una parte amministrativa del sito in cui gli utenti caricano i relativi articoli. È possibile utilizzare il metodo WaitForChanged per controllare tale directory fino alla modifica della data dell'ultimo accesso, quindi avviare l'elaborazione della directory delle news per i nuovi articoli.

Per specificare il tipo di modifica da controllare, impostare il valore di un'enumerazione WatcherChangeTypes. È possibile impostare il valore Created, Changed, Renamed, Deleted o All. Se si imposta il valore su All, verranno controllate tutte le modifiche apportate alla directory. Se si desidera attendere la generazione dell'evento solo per un determinato periodo di tempo, sarà possibile inoltre specificare un periodo di timeout.

Il metodo WaitForChanged restituisce un oggetto di tipo WaitForChangedResult. Questa classe contiene informazioni specifiche sul tipo di modifiche apportate all'interno della directory. Per ulteriori informazioni sulle modifiche, è possibile accedere a informazioni contenute in questo oggetto, quali Name, OldName e TimedOut.

Il metodo WaitForChanged è sincrono. Se si utilizza questo metodo in un'applicazione Windows, l'applicazione cesserà di rispondere se il metodo è stato utilizzato sul thread UI anziché sul thread di lavoro. Per ulteriori informazioni su problemi relativi al threading in Visual Basic, vedere Multithreading in Visual Basic.

Per attendere le modifiche

  1. Creare e configurare l'istanza del componente FileSystemWatcher per indicare la directory che si desidera controllare. Per ulteriori informazioni, vedere Procedura: creare istanze del componente FileSystemWatcher o Procedura: configurare istanze del componente FileSystemWatcher.

  2. Nell'Editor di codice creare un'istanza della classe WaitForChangedResult.

    Dim result As System.IO.WaitForChangedResult
    
     System.IO.WaitForChangedResult result;
    
  3. Nell'istanza del componente FileSystemWatcher specificare il tipo di evento atteso impostando il valore della proprietà WaitForChanged su uno dei valori dell'enumerazione WatcherChangeTypes.

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

    Per specificare un periodo di timeout come secondo parametro, è possibile utilizzare una forma di overload del metodo WaitForChanged.

  4. Specificare le operazioni da eseguire quando viene apportata la modifica oggetto del controllo. Per ulteriori informazioni, vedere Procedura: creare gestori per gli eventi del file system.

    Nel codice riportato di seguito viene illustrato come notificare a un utente che è necessario eliminare un file e attendere la generazione dell'evento Deleted. Nel codice si interviene sulla cartella personale dell'utente.

    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.");
    

Vedere anche

Attività

Procedura: creare istanze del componente FileSystemWatcher

Procedura: configurare istanze del componente FileSystemWatcher

Procedura: creare gestori per gli eventi del file system

Concetti

Introduzione al monitoraggio degli eventi del file system