2016-03-05 22 views
0

我需要在創建特定文件時觸發事件。但是,此文件是在Temp文件夾中創建的目錄中創建的。所以我將不得不設置整個Temp目錄與所有子目錄的監視,並且我關心性能影響。FileSystemWatcher性能

我知道文件的確切名稱和路徑,只需要跟蹤它的創建。輪詢File.Exists每秒一次還是設置FileSystemWatcher更好?也許有一種方法可以禁用除文件創建之外的所有事件的監視,也許它會比輪詢更快?

我無法真正地測試它,因爲Temp目錄的使用模式是相當不可預測的。

+0

'我無法真正測試它,因爲Temp目錄的使用模式是相當不可預測的.'如果這是真的,那麼不能使用多個任務/線程的代碼進行測試.... – Eser

回答

1

我不明白。爲什麼你必須設置「觀看」整個臨時目錄?而不只是該文件所在的文件夾?

我知道確切名稱和文件的路徑谷歌

BIT:Use FileSystemWatcher on a single file in C#

這將會比輪詢可能是更好的性能每段時間ammount的。

但仍然,我已閱讀,甚至發生在我身上,FSW不是100%可靠。

所以,我覺得兩種方法:

1)不要FSW,投票和用戶干預的混合(即刷新按鈕)

2)獲取一些細微的藥物和閱讀:https://msdn.microsoft.com/en-us/library/windows/hardware/ff540402%28v=vs.85%29.aspx

+0

因爲它的路徑不存在程序啓動時。在某個時候Temp內的一個目錄將被創建。過了一段時間後,裏面還有一個目標。然後在一段時間後會出現目標文件。 – Poma

+0

如果你知道什麼時候會出現,那麼你可以做#1,即使知道FSW不是很可靠。 –