다음을 통해 공유


방법: 지정된 파일 시스템 이벤트가 발생할 때까지 대기

업데이트: 2007년 11월

FileSystemWatcher 구성 요소를 사용하여 특정 디렉터리를 즉시 모니터링하는 것은 물론, WaitForChanged 메서드를 사용하여 특정 이벤트가 발생할 때까지 기다린 다음 스레드 실행을 계속할 수 있습니다. 예를 들어, 웹 기반 뉴스 응용 프로그램을 다루는 경우 사용자가 뉴스 내용을 업로드하는 사이트의 관리 부분을 만들 수 있습니다. WaitForChanged 메서드를 사용하면 마지막 액세스 날짜가 변경될 때까지 디렉터리를 감시한 다음 새 기사에 대해 뉴스 디렉터리를 처리할 수 있습니다.

WatcherChangeTypes 열거형의 값을 설정하여 감시할 변경 형식을 지정할 수 있습니다. 사용할 수 있는 값은 Created, Changed, Renamed, Deleted 또는 All입니다. 값을 All로 설정하면 디렉터리의 모든 변경 내용을 감시합니다. 또한 일정 시간 후 이벤트를 발생시키려면 제한 시간을 지정하면 됩니다.

WaitForChanged 메서드는 WaitForChangedResult 형식의 개체를 반환합니다. 이 클래스에는 디렉터리에서 발생한 변경 형식에 대한 특정 정보가 있습니다. 이 개체의 Name, OldName, TimedOut과 같은 정보에 액세스하면 자세한 변경 정보를 찾을 수 있습니다.

WaitForChanged는 동기 메서드입니다. Windows 응용 프로그램에서 이 메서드를 사용하면 작업자 스레드 대신 UI 스레드에서 이 메서드가 사용된 경우 응용 프로그램이 응답을 중단합니다. Visual Basic의 스레딩 문제에 대한 자세한 내용은 Visual Basic의 다중 스레딩을 참조하십시오.

변경을 기다리려면

  1. 감시할 디렉터리를 나타내도록 FileSystemWatcher 구성 요소 인스턴스를 만들고 구성합니다. 자세한 내용은 방법: FileSystemWatcher 구성 요소 인스턴스 만들기 또는 방법: 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. 감시하고 있는 변경이 일어나면 수행할 동작을 지정합니다. 자세한 내용은 방법: 파일 시스템 이벤트 처리기 만들기를 참조하십시오.

    다음 코드에서는 사용자에게 파일을 삭제할 필요가 있다는 것을 알려준 다음 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.");
    

참고 항목

작업

방법: FileSystemWatcher 구성 요소 인스턴스 만들기

방법: FileSystemWatcher 구성 요소 인스턴스 구성

방법: 파일 시스템 이벤트 처리기 만들기

개념

파일 시스템 이벤트 모니터링 소개