C#中带有FileSystemWatcher的Windows服务

Har*_*ter 9 c# windows-services filesystemwatcher

我必须创建一个程序来监视文件大小的变化.我已经制作了一个简单的Windows服务和filesystemwatcher,所以我现在熟悉这个概念.我还制作了一个代码,用于检查filesize(在表单按钮中创建)但尚未在我的filesystemwatcher中实现.如何创建具有监视文件大小的filewatcher的Windows服务?我是否必须在Windows服务中放置filesystemwatcher并通过OnStart方法调用观察者?

Luk*_*att 16

如果您正在制作Window的服务,那么您将希望以编程方式进行.我通常会从我的服务中保留表单,并为它们建立一个单独的界面进行通信.现在,FileSystemWatcher没有一个只能查看大小的事件,因此您需要创建一个与FileSystemWatcher.Changed绑定的方法来检查对现有文件的修改.在OnStart方法中声明并初始化控件,并将事件绑定在一起.在OnStop方法中执行任何清理代码.它应该看起来像这样:

protected override void OnStart(string[] args)
{
FileSystemWatcher Watcher = new FileSystemWatcher("PATH HERE");
Watcher.EnableRaisingEvents = true;
Watcher.Changed += new FileSystemEventHandler(Watcher_Changed);
} 

// This event is raised when a file is changed
private void Watcher_Changed(object sender, FileSystemEventArgs e)
{
// your code here
}
Run Code Online (Sandbox Code Playgroud)

另请注意,FileSystemWatcher将为单个文件触发多个事件,因此当您调试监视模式以解决它时.

  • Kyle Libbert编写了一些缓解文件双重处理的代码.它在这里:http://www.intertech.com/Blog/avoiding-file-concurrency-using-system-io-filesystemwatcher/ (2认同)