繁体   English   中英

带有FileSystemWatcher的Windows Service在第一个事件后停止

[英]Windows Service with FileSystemWatcher stops after the first event

我正在构建一个简单的Windows服务(基本上将本教程此类结合)。

现在,我有一个“ FROM”目录和两个“ TO”(TO1,TO2)目录。 当我将文件放入FROM时,应将其同时复制到TO1和TO2。 我安装了服务,并在运行状态的服务控制管理器中启动了该服务。 在第一次运行时,它将文件复制到TO1和TO2,并且此后服务仍在运行。 然后,当我将另一个文件放置到FROM(具有不同的名称)时,什么也没发生。 刷新服务后,我发现该服务已停止。

服务为何停止​​? 似乎在我放置第二个文件的那一刻就停止了。

在这里,我注册了文件系统观察器:

    // File System Watcher
    var fileSystemWatcher = new FileSystemWatcher();
    fileSystemWatcher.Created += FileSystemWatcher_MoveOnCreate;
    fileSystemWatcher.Path = this.fromPath;
    fileSystemWatcher.EnableRaisingEvents = true;

这是事件处理程序:

private void FileSystemWatcher_MoveOnCreate(object sender, FileSystemEventArgs e)
{
    string FROM = Path.Combine(fromPath, e.Name);
    string TO1 = Path.Combine(toPathOne, e.Name);
    string TO2 = Path.Combine(toPathTwo,  e.Name);

    File.Copy(FROM, TO1);
    File.Copy(FROM, TO2)
}

如果Windows服务停止,则您的代码中某个地方将出现未处理的异常。 尝试使用try{}catch(){}包围代码的关键点(可能是FileSystemWatcher_MoveOnCreate函数的整个主体),并记录发生的情况。 通常,您应该将日志添加到Windows服务中,这是您了解事情是否正在进行的唯一方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM