21

フォルダー内のファイルの変更に応答する小さなアプリケーションを作成しました。しかし、Visual Studio 2008 でファイルを編集すると、何も検出されません。代わりにメモ帳でファイルを編集すると、すべてが期待どおりに機能します。

確かに、Visual Studio はある時点でファイルを保存しますが、スタジオを閉じてもウォッチャーはトリガーしません。ここで何が欠けているのか分かりますか?

このサンプル コード (C#) は、問題を説明する必要があります。

FileSystemWatcher fileSystemWatcher = new FileSystemWatcher("C:\Test", "*.cs");
WaitForChangedResult changed = fileSystemWatcher.WaitForChanged(WatcherChangeTypes.All);
Console.Out.WriteLine(changed.Name);

同じ問題を説明しているAyende のブログ投稿を見つけましたが、残念ながら解決策はありません。

4

3 に答える 3

4

この可能性を記録するために...

msdnから:

Service Pack 1 より前の Windows XP または Windows 2000 SP2 以前で、複数の FileSystemWatcher オブジェクトが同じ UNC パスを監視している場合、オブジェクトの 1 つだけがイベントを発生させます。Windows XP SP1 以降、Windows 2000 SP3 以降、または Windows Server 2003 を実行しているマシンでは、すべての FileSystemWatcher オブジェクトが適切なイベントを発生させます。

だから私の考えは、Visual Studioが何らかの理由でファイルに独自のFileSystemWatcherを保持しているということでした...しかし、UNCパスも言及されたOSもありません。

于 2009-03-25T14:56:34.990 に答える