2010-10-20 85 views
1

我在一個目錄上使用了一個FileSystemWatcher,並添加了它的事件處理程序,設置了其EnableRaisingEvents=true;IncludeSubdirectories=false;並添加了NotifyFiltersFileSystemWatcher中的FileNotFoundException

運行應用程序時,如果我創建指定的目錄中新建文件夾有時我得到

FileNotFoundException異常:「當讀取一個目錄時出錯」。 System.IO.FileSystemWatcher.StartRaisingEvents() System.IO.FileSystemWatcher.set_EnableRaisingEvents(布爾值)

是一個什麼問題的根本原因?

什麼是StartRaisingEvents()

+0

您是否能夠發佈實際的代碼。我猜你正在構造新的文件夾路徑不正確。 – codingbadger 2010-10-20 10:33:39

+0

我正在使用資源管理器創建新文件夾>創建新文件夾 – munna 2010-10-20 10:36:50

回答

2

這通常是因爲FileSystemWatcher可能不可靠。獲取事件時,文件夾可能不「完全」存在。在實際執行IO操作之前,您可能需要進行足夠的暫停重試並執行各種Directory.Exists()檢查。

+0

我必須讓線程進入睡眠狀態,以確保文件在對文件執行操作之前已成功創建。 – dhirschl 2010-10-20 12:49:39

0

我有很多相同的問題,最後我發現問題出在路徑上。

Directory.Exist()給出了該目錄存在的答案......即使路徑在字符串末尾有一個空字符,但FileSystemWatcher無法管理它。 所以很顯然Directory.Exist()修剪的路徑,但守望者沒有。在我的情況下,刪除空字符解決了這個問題。

希望它可以幫助某人。