【问题标题】:FileSystemWatcher unable to startFileSystemWatcher 无法启动
【发布时间】:2012-05-29 19:33:47
【问题描述】:

我正在使用 C# 2010 开发 Windows 服务,并且正在使用 FileSystemWatcher。由于某种原因,我无法启动我的服务。

当我尝试运行我的服务时收到以下消息。

本地计算机上的 -service- 启动和停止。如果某些服务没有在其他服务或程序中使用,它们会自动启动。

当我输入这段代码时会发生这种情况:

开机:

FSWatcherTest.Path = ConfigurationManager.AppSettings["WatchPath"].ToString();

然后在一个方法中:

private void InitializeComponent()
{
     this.FSWatcherTest = new FileSystemWatcher();
     ((System.ComponentModel.ISupportInitialize)(this.FSWatcherTest)).BeginInit();

       this.FSWatcherTest.EnableRaisingEvents = true;
       this.FSWatcherTest.Path = "my path";
       this.FSWatcherTest.Changed += new      FileSystemEventHandler(this.FSWatcherTest_Changed_1);
       ((ISupportInitialize)(this.FSWatcherTest)).EndInit();

}

等待一些可能的答案。提前谢谢!

【问题讨论】:

  • 服务有什么作用吗?仅启用文件系统观察程序不会使服务保持活动状态
  • @daveL:我怀疑你是对的。
  • @Shaheel 您的事件日志中有什么内容?
  • @daveL 我必须根据某些扩展名将文件复制到另一个地方。复制没有问题。我想要的是监视一个特定的文件夹,这就是 FileSystemWatcher 出现的地方。输入此代码后,我什至无法启动服务!
  • 请发布您的 OnStart() 方法的代码,以便我们查看可能导致问题的原因。例如,它是否处理异常?

标签: .net windows exception-handling windows-services filesystemwatcher


【解决方案1】:

这可能是一个安全问题,因为文件系统观察程序需要完全信任

【讨论】:

    【解决方案2】:

    我已经有一段时间没有使用它了,所以我可能不在基地,但你可能会在 FileSystemWatcher 准备好之前打开它。

    在上面的代码中,EnableRaisingEvents 在 InitializeComponent 中设置为 true(我猜是设计器生成的代码的一部分)。设计器将该属性默认为 true,希望您在设计时也设置有效路径。但是您并没有在设计时设置真正的路径(您只是在使用“我的路径”)。 FSW 可能在 EndInit() 之后立即抛出异常,因为它开始寻找“我的路径”并且找不到它。

    由于您在 OnStart 方法中设置真实路径,因此您应该在设计器中设置 EnableRaisingEvents false。设置路径后,在 OnStart 方法中将其设置为 true。那是您希望它开始寻找更改的时候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多