方法 : ファイル システム イベントに対するハンドラを作成する

更新 : 2007 年 11 月

FileSystemWatcher コンポーネントは、監視しているディレクトリで行われた変更の種類に応じて、4 つのイベントを発生させます。これらのイベントを次に示します。

  • Created — ディレクトリまたはファイルが作成されたときに発生します。

  • Deleted — ディレクトリまたはファイルが削除されたときに発生します。

  • Renamed — ディレクトリまたはファイルの名前が変更されたときに発生します。

  • Changed — ディレクトリまたはファイルのサイズ、システム属性、最終書き込み時刻、最終アクセス時刻、または NTFS セキュリティ アクセス許可が変更されたときに発生します。

    1e6szwcw.alert_note(ja-jp,VS.90).gifメモ :

    NotifyFilter プロパティを使用すると、Changed イベントが発生させるイベントの量を制限できます。詳細については、「方法 : FileSystemWatcher コンポーネントのインスタンスを設定する」を参照してください。

これらの各イベントに対して、変更が発生したときにコード内で自動的にメソッドを呼び出すハンドラを定義できます。イベント ハンドラは、コンポーネント、フォーム、またはコントロールのイベントに連結されたメソッドです。各イベント ハンドラには、イベントを適切に処理できるように 2 つのパラメータが用意されています。1 つは sender で、イベントの原因となるオブジェクトへのオブジェクト参照を提供します。もう 1 つの e パラメータは、イベントとその情報を表すオブジェクトを提供します。

FileSystemWatcher コンポーネントのインスタンスのイベント ハンドラを作成する方法はいくつかありますが、最も簡単なのは Visual Studio によってほとんどのコードを自動的に作成する方法です。デザイナで FileSystemWatcher コンポーネントのインスタンスをダブルクリックすると、Visual Studio にコード エディタが表示され、Changed イベントとそれが呼び出す空白プロシージャの両方に対してイベント ハンドラが作成されます。次に、プロシージャ内で発生させる処理を入力します。他のイベントを処理する独自のハンドラも作成できます。

イベント ハンドラの詳細については、「イベントの処理と発生」を参照してください。

Changed イベントの既定のハンドラを作成するには

  1. FileSystemWatcher コンポーネントのインスタンスを作成します。詳細については、「方法 : FileSystemWatcher コンポーネントのインスタンスを作成する」を参照してください。

  2. コンポーネントに必要なプロパティを設定します。詳細については、「方法 : FileSystemWatcher コンポーネントのインスタンスを設定する」を参照してください。

  3. デザイナで、ハンドラを作成する FileSystemWatcher コンポーネントをダブルクリックします。

    1e6szwcw.alert_note(ja-jp,VS.90).gifメモ :

    [コード エディタ] が表示され、2 つの項目がコードに追加されます。1 つはデリゲートを作成および登録し、プロシージャを呼び出すハンドラです。もう 1 つは Changed イベントの空白プロシージャです。

  4. Changed イベントの空白プロシージャに、このイベントが呼び出されたときに処理を実行するコードを定義します。

FileSystemWatcher イベントのハンドラを作成するには

  1. FileSystemWatcher コンポーネントのインスタンスを作成します。詳細については、「方法 : FileSystemWatcher コンポーネントのインスタンスを作成する」を参照してください。

  2. コンポーネントに必要なプロパティを設定します。詳細については、「方法 : FileSystemWatcher コンポーネントのインスタンスを設定する」を参照してください。

  3. 呼び出される適切なプロシージャを作成し、エントリを処理するコードを定義します。Changed イベントのイベント ハンドラの例を次に示します。

    Private Sub myWatcher_Changed(ByVal sender As System.Object, _
       ByVal e As System.IO.FileSystemEventArgs)
        Dim pathChanged As String
        pathChanged = e.FullPath
    End Sub
    
     private void myWatcher_Changed(object sender,
        System.IO.FileSystemEventArgs e)
        {
            string pathChanged = e.FullPath;
        }
    
    
  4. FileSystemEventHandler のインスタンスをコンポーネントのイベントに割り当てます。この例では、手順 3. で定義した Changed イベント ハンドラを追加しています。

    AddHandler myWatcher.Changed, _
       New System.IO.FileSystemEventHandler(AddressOf Me.myWatcher_Changed)
    
         myWatcher.Changed +=
               new System.IO.FileSystemEventHandler(this.myWatcher_Changed);
    

参照

処理手順

方法 : FileSystemWatcher コンポーネントのインスタンスを作成する

方法 : FileSystemWatcher コンポーネントのインスタンスを設定する

概念

ファイル システム イベントの監視の概要