gpt4 book ai didi

c# - 将 FileSystemWatcher 与 Windows 服务一起使用

转载 作者:太空狗 更新时间:2023-10-29 22:18:48 24 4
gpt4 key购买 nike

我有一个 Windows 服务,它需要监视一个目录中的文件,然后将其移动到另一个目录。我正在使用 FileSystemWatcher 来实现这一点。

这是我的主要服务类。

public partial class SqlProcessService : ServiceBase
{
public SqlProcessService()
{
InitializeComponent();
}

protected override void OnStart(string[] args)
{
FileProcesser fp = new FileProcesser(ConfigurationManager.AppSettings["FromPath"]);
fp.Watch();
}

protected override void OnStop()
{

}
}

这是我的文件处理器类

public class FileProcesser
{
FileSystemWatcher watcher;
string directoryToWatch;
public FileProcesser(string path)
{
this.watcher = new FileSystemWatcher();
this.directoryToWatch = path;
}
public void Watch()
{
watcher.Path = directoryToWatch;
watcher.NotifyFilter = NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.DirectoryName;
watcher.Filter = "*.*";
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
}

private void OnChanged(object sender, FileSystemEventArgs e)
{
File.Copy(e.FullPath, ConfigurationManager.AppSettings["ToPath"]+"\\"+Path.GetFileName(e.FullPath),true);
File.Delete(e.FullPath);
}
}

在我安装并启动该服务后,它对 1 个文件工作正常,然后自动停止。是什么让服务自动停止?当我检查事件日志时,我没有看到错误或警告!

最佳答案

一旦超出范围,您的局部变量 fp 就会被处理掉。解决方案是改为将其声明为实例变量

关于c# - 将 FileSystemWatcher 与 Windows 服务一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30830565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com