如何实现文件系统观察器?

时间:2011-03-03 06:35:38

标签: c# asp.net filesystems directory filesystemwatcher

我的情况如下:

假设有一个文件夹“D:\ Main”,它可以包含任何word文件。在将任何文件/文件添加到文件夹时,我需要解析文件,并根据一些关键字,我需要将文件传输到其他一些子文件夹以及一些数据库条目。

我对FileSystemWatcher了解一些。如果有一个像“检查和移动”这样的按钮,那么我知道在按钮点击事件中我可以做一些事情但是如何自动完成。我的意思是,如果我手动将文件添加到文件夹,它也应该这样做(文件可以通过网络和手动上传)。我目前正在使用asp.net和c#的web应用程序工作,我对windows有一点了解应用。任何人都可以建议我如何处理这个问题?感谢。

2 个答案:

答案 0 :(得分:1)

您需要创建Windows应用程序或Windows服务应用程序。 FileSystemWatch无法在Web应用程序中生存。原因是因为Web应用程序按照以下步骤运行:

  1. webserver线程加载应用程序
  2. 您的应用程序启动观察程序,然后最终输出Web响应。
  3. 在一段空闲时间之后,线程终止了应用程序,从而终止了你的观察者。
  4. 当您拥有Windows应用时,可以将CanRaiseEvents = truew.Created += new System.IO.FileSystemEventHandler(w_Created);添加到观察者。在

    中进行处理
        void w_Created(object sender, System.IO.FileSystemEventArgs e)
        {
            // here
        }
    

答案 1 :(得分:0)

我恰好正在研究一些非常相似的东西。

但你回答了自己的问题。 FileSystemWatcher可能就是你想要的。

更低级别的Win32 API信息在这里: Obtaining Directory Change Notifications

在这里: FindFirstChangeNotification