我必须创建一个程序来监视文件大小的变化。我已经制作了一个简单的 Windows 服务和文件系统观察器,所以我现在熟悉这个概念。我还制作了一个检查文件大小的代码(在表单按钮中制作),但尚未在我的文件系统观察器中实现。如何创建具有监视文件大小的文件监视器的 Windows 服务?我是否必须在 Windows 服务中放置一个文件系统观察程序并通过 OnStart 方法调用观察程序?
问问题
18434 次
3 回答
17
如果您正在制作 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
}
另请注意,FileSystemWatcher 将为单个文件触发多个事件,因此当您调试时请注意模式以解决它。
于 2012-08-17T03:39:52.643 回答
3
您可以通过设置在 OnStart 方法中简单地启用您的文件系统观察器对象
EnableRaisingEvents = true;
然后处理事件。那应该这样做。
于 2012-08-17T03:40:07.277 回答
1
您可以创建一个委托来处理已更改的内容
myWatcher.Changed += new FileSystemHandler(FSWatcherTest_Changed);
private void FSWatcherTest_Changed(object sender,
System.IO.FileSystemEventArgs e)
{
//code here for newly changed file or directory
}
等等
我建议您阅读这篇文章http://www.codeproject.com/Articles/18521/How-to-implement-a-simple-filewatcher-Windows-serv
on_start
在 Windows 服务中也有这个委托
于 2012-08-17T03:42:00.190 回答