考慮以下代碼:如何使用FileSystemWatcher觀察目錄並仍然允許它被正確刪除?
string dir = Environment.CurrentDirectory + @"\a";
Directory.CreateDirectory(dir);
FileSystemWatcher watcher = new FileSystemWatcher(dir);
watcher.IncludeSubdirectories = false;
watcher.EnableRaisingEvents = true;
Console.WriteLine("Deleting " + dir);
Directory.Delete(dir, true);
if (Directory.Exists(dir))
{
Console.WriteLine("Getting dirs of " + dir);
Directory.GetDirectories(dir);
}
Console.ReadLine();
有趣的是,這將引發一個UnauthorizedAccessException上Directory.GetDirectories(dir)
。
刪除監視的目錄無錯地返回,但是Directory.Exists()仍然返回true並且目錄仍然列出。此外訪問該目錄會產生任何程序的「訪問被拒絕」。一旦帶有FileSystemWatcher的.NET應用程序退出目錄就會消失。
我怎樣才能看到一個目錄,同時仍然允許它被正確刪除?
這是相當令人不滿意的,因爲它使無形的目錄無法觀察。但是由於它是Windows的限制,我沒有看到解決辦法。 – 2012-09-18 07:05:56