c# - C# 中带有 FileSystemWatcher 的 Windows 服务

标签 c# windows-services filesystemwatcher

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

最佳答案

如果您正在创建 Windows 服务,那么您将希望以编程方式进行。我通常将表单排除在我的服务之外,并为它们创建一个单独的界面来进行通信。现在 FileSystemWatcher 没有一个事件可以单独监视大小,因此您需要创建一个与 FileSystemWatcher.Changed 相关的方法来检查对现有文件的修改。在您的 OnStart 方法中声明并初始化控件,并将事件绑定(bind)在一起。在您的 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 将为单个文件触发多个事件,因此当您调试时注意模式以解决它。

关于c# - C# 中带有 FileSystemWatcher 的 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11999335/

相关文章:

.net - 如何捕获文件复制/移动事件的详细信息,例如源文件名

c# - 是否可以创建一个既可以线程安全又可以非线程安全的类?

c# - MongoDB c# 使用定义生成器检索文档中数组中的所有匹配元素

python - 当 python 代码从 Windows 服务启动时,记录器文件轮换不起作用

c# - RestSharp 超时不起作用

c# - 使用 FileSystemWatcher 触发事件,然后删除新创建的文件?

c# - MSTest VS2010 - DeploymentItem 将文件复制到不同机器上的不同位置

c# - 启动命令行,包括来自 C# 的参数

delphi - Delphi Windows服务名称与项目名称冲突

c# - FileSystemWatcher 触发两次,程序突然停止