C# 在Windows服务中使用FileSystemWatcher

C# 在Windows服务中使用FileSystemWatcher,c#,windows-services,filesystemwatcher,C#,Windows Services,Filesystemwatcher,我有一个windows服务,它需要监视一个目录中的文件,然后将其移动到另一个目录。我正在使用FileSystemWatcher来实现这一点 这是我的主要服务课 public partial class SqlProcessService : ServiceBase { public SqlProcessService() { InitializeComponent(); } protected override void OnStart(stri

我有一个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一旦超出范围,就会被释放。解决方案是将其声明为实例变量

您可以将visual studio调试器附加到进程并对其进行调试。您还可以使用try-catch并将异常写入文本文件。它会崩溃吗?试着捕捉并记录