7

Visual Studio をバージョン 2013 Ultimate にアップグレードしたところ、System.IO.FileSystemWatcherクラスが Visual Studio 2013 によって編集されたファイルの監視に失敗したことがわかりました。以下のコードがあるとします。

class Program
{
    static void Main(string[] args)
    {
        var watcher = new FileSystemWatcher(@"C:\test", "*.txt");
        watcher.Changed += watcher_Changed;
        watcher.EnableRaisingEvents = true;
        Console.Read();
        watcher.Changed -= watcher_Changed;
    }

    static void watcher_Changed(object sender, FileSystemEventArgs e)
    {
        Console.WriteLine("file is changed");
    }
}

メモ帳でファイルを編集するC:\test\a.txtと、プログラムはファイルが変更されたことを報告しますが、Visual Studio 2013 で編集すると、プログラムは黙っています。なんで?

4

2 に答える 2

8

Visual Studio 2013 でファイルを編集すると、一時ファイルが作成され、元のファイルが削除され、一時ファイルの名前が同じ名前に変更されることに気付きました。したがって、通常の編集をキャッチするにはSystem.IO.FileSystemWatcher'sChangedイベントを処理し、Visual Studio での編集の場合はRenamedイベントを処理します。

于 2013-11-21T19:26:56.150 に答える