2010-09-17 45 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对象,该对象引发多个事件,您可以以不同方式处理每个事件。

相关问题