FileSystemWatcher无法启动

时间:2012-05-23 09:09:32

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

我正在使用C#2010开发Windows服务,我正在使用FileSystemWatcher。出于某种原因,我无法开始服务。

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

  

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

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

的OnStart:

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();

}

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

2 个答案:

答案 0 :(得分:0)

这可能是一个安全问题,因为filesystemwatcher需要完全信任

答案 1 :(得分:0)

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

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

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