2010-09-17 87 views
0

所以,這是我的C#程序大致的樣子在我的情況下實現Filewatching的最佳方法?

Main() 
// call to method that reads XML file and loads it into a list of structure 
// call to method that works on the structure, manpulates data etc. 
// call to method that starts filewatching 

Filwatching_method() 
// if any change is detected, calls method OnChange 

OnChange() 
// Action on change 

如果OnChange方法被調用,即已經檢測到變化,我想重複一遍整個過程。我應該從OnChange撥打Main(),還是有另一種更好的方法?

回答

1

就我個人而言,這是我的想法。

  1. 是的,你應該打電話給你MainOnChange方法,如果這是其實你想做的事(即,只需再次運行Main)。
  2. 但是爲了防止不受控制的遞歸,您應該確保從執行的文件操作在Main之下本身不會觸發OnChange。這可以通過設置標誌或臨時刪除您的處理程序並在完成後將其添加回來。
+0

Gotcha。我實際上並沒有從主內部操作文件。我只讀它,然後處理加載到內存上的內容並將其寫入另一個文件。但是,當我從main()讀取文件,會導致FileWatcher觸發OnChange方法? – xbonez 2010-09-17 14:47:08

+0

@xbonez:我老實不確定;如果觀察者被設置爲監視文件的最後訪問屬性,它*可能*觸發事件。但是你可以很容易地自己測試一下。 – 2010-09-17 15:23:39

2

你可以看看FileSystemWatcher這個類,它允許你監視文件系統上發生的事件並得到通知,比如正在改變的文件。

+0

我已經看過那個鏈接,並且實現了FileWatcher。我不確定如何重複整個過程,即在改變的時候從頭開始我的程序。 – xbonez 2010-09-17 14:44:57

0

創建一個FileSystemWatcher對象,該對象引發多個事件,您可以以不同方式處理每個事件。

相關問題