共用方式為


HOW TO:等候直到指定的檔案系統事件發生

更新:2007 年 11 月

除了使用 FileSystemWatcher 元件來立即監視特定目錄之外,您還可以使用 WaitForChanged 方法來等候特定事件發生,然後再繼續執行該執行緒。例如,如果您使用 Web 架構的 News 應用程式,您可能會在站台建立 Admin 部分來讓使用者上載他們的新聞報導。您可以使用 WaitForChanged 方法來監視這個目錄,直到上次存取日期變更才開始處理 News 目錄中的新文件。

您可以設定 WatcherChangeTypes 列舉型別的值來指定要監看的變更類型。可能值是 CreatedChangedRenamedDeletedAll。若要監看目錄的任何變更,請將值設定為 All。如果您只要在一段時間之中等候事件發生,也可以指定逾時期間。

WaitForChanged 方法會傳回 WaitForChangedResult 型別的物件。這個類別包含發生在目錄中變更類型的特定資訊。您可以存取這個物件的 Name、OldName 及 TimedOut 資訊來找出更多有關變更的資訊。

WaitForChanged 是一種同步方法。如果您在 Windows 應用程式中使用它,而且是使用在 UI 執行緒而非背景工作執行緒,則應用程式會停止回應。如需 Visual Basic 中執行緒問題的詳細資訊,請參閱 Visual Basic 中的多執行緒

若要等候變更

  1. 建立並設定您的 FileSystemWatcher 元件執行個體,來指出所要監看的目錄。如需詳細資訊,請參閱 HOW TO:建立 FileSystemWatcher 元件執行個體HOW TO:設定 FileSystemWatcher 元件執行個體

  2. 在 [程式碼編輯器] 中,建立 WaitForChangedResult 類別的執行個體。

    Dim result As System.IO.WaitForChangedResult
    
     System.IO.WaitForChangedResult result;
    
  3. 在您的 FileSystemWatcher 元件執行個體上,指定其等候事件的型別,方式是將 WaitForChanged 屬性的值設定為 WatcherChangeTypes 列舉型別的任一值。

    fileSystemWatcher1.WaitForChanged(System.IO.WatcherChangeTypes.All)
    
         fileSystemWatcher1.WaitForChanged(System.IO.WatcherChangeTypes.All);
    
    秘訣

    您可以使用 WaitForChanged 方法的多載形式,將逾時期間指定為第二參數。

  4. 指定當您監視的變更發生時所要採取的動作。如需詳細資訊,請參閱 HOW TO:建立檔案系統事件的處理常式

    下列程式碼將說明如何告知使用者檔案需要刪除,然後等候引發 Deleted 事件。這個程式碼會監看使用者的個人資料夾。

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

請參閱

工作

HOW TO:建立 FileSystemWatcher 元件執行個體

HOW TO:設定 FileSystemWatcher 元件執行個體

HOW TO:建立檔案系統事件的處理常式

概念

監視檔案系統事件簡介