C# 在我的案例中,实现文件监视的最佳方法是什么?

C# 在我的案例中,实现文件监视的最佳方法是什么?,c#,C#,这就是我的C#程序的大致外观 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

这就是我的C#程序的大致外观

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(),或者还有其他更好的方法吗?

您可以查看一个类,该类允许您监视文件系统上发生的事件(如文件被更改)并收到通知。

您可以查看一个类,该类允许您监视文件系统上发生的事件(如文件被更改)并收到通知。

创建一个对象抛出多个事件,您可以以不同的方式处理每个事件

创建一个抛出多个事件的对象,您可以以不同方式处理每个事件

就我个人而言,这就是我的想法

  • 是的,您应该从
    OnChange
    方法调用
    Main
    ,如果这确实是您想要做的(即,再次运行
    Main
  • 但是为了防止不受控制的递归,您应该确保从
    Main
    中执行的文件操作本身不会触发
    OnChange
    。这可以通过设置标志或临时删除
    Changed
    处理程序,并在完成后将其添加回

  • 就我个人而言,这是我的想法

  • 是的,您应该从
    OnChange
    方法调用
    Main
    ,如果这确实是您想要做的(即,再次运行
    Main
  • 但是为了防止不受控制的递归,您应该确保从
    Main
    中执行的文件操作本身不会触发
    OnChange
    。这可以通过设置标志或临时删除
    Changed
    处理程序,并在完成后将其添加回

  • 我已经研究了这个链接,并实现了FileWatcher。我不知道如何重复整个过程,即在发生变化时从头开始重新启动我的程序。我已经研究了该链接,并实现了FileWatcher。我不知道如何重复整个过程,也就是说,在发生变化的情况下从头开始重新开始我的程序。明白了。实际上,我并不是在main中操作文件。我只读它,然后处理加载到内存中的内容并将其写入另一个文件。然而,当我从main()读取文件时,会不会导致FileWatcher触发OnChange方法?@xbonez:我真的不确定;如果监视程序设置为监视文件的上次访问属性,则可能会触发该事件。但是你可以自己测试一下,明白了。实际上,我并不是在main中操作文件。我只读它,然后处理加载到内存中的内容并将其写入另一个文件。然而,当我从main()读取文件时,会不会导致FileWatcher触发OnChange方法?@xbonez:我真的不确定;如果监视程序设置为监视文件的上次访问属性,则可能会触发该事件。但是你可以自己很容易地测试一下。