0

フォルダーの1つの変更に従う必要があります。

class FileWatcher
{
    FileSystemWatcher watcher = new FileSystemWatcher();

    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    public void StartWatching()
    {
        watcher.Path = AppDomain.CurrentDomain.BaseDirectory + "\\Read test data";

        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;            

        watcher.Changed += new FileSystemEventHandler(OnChanged);

        watcher.EnableRaisingEvents = true;
     }

    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        Console.WriteLine("Changes in folder: 'Read test data' ");           
    }
}

そして初期化:

private FileWatcher watch = new FileWatcher();

    private void StartReadCVSChanges_Click(object sender, EventArgs e)
    {    
        watch.StartWatching();
    }  

なんらかの変更を加えると、何らかの理由でイベント ハンドラーが 3 回呼び出されます。

ここに画像の説明を入力

私はそれが一度であることが好きです。

何か案は?

4

1 に答える 1

0

そこからこのリンク テキストを参照してください。

特定の状況では、1 つの作成イベントが、コンポーネントによって処理される複数の Created イベントを生成することに気付く場合があります。たとえば、FileSystemWatcher コンポーネントを使用してディレクトリ内の新しいファイルの作成を監視し、メモ帳を使用してファイルを作成してテストすると、ファイルが 1 つしか作成されていない場合でも、2 つの Created イベントが生成されることがあります。これは、メモ帳が書き込みプロセス中に複数のファイル システム アクションを実行するためです。メモ帳は、ファイルのコンテンツとファイル属性を作成するバッチでディスクに書き込みます。他のアプリケーションも同じように実行される場合があります。FileSystemWatcher はオペレーティング システムのアクティビティを監視するため、これらのアプリケーションが起動するすべてのイベントが取得されます。

于 2014-11-14T09:56:23.273 に答える