1

我正在使用 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();

}

等待一些可能的答案。先感谢您!

4

2 回答 2

0

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

于 2012-05-23T15:03:01.243 回答
0

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

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

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

于 2012-05-30T21:07:45.993 回答