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

私はしばらくこれを使用していないので、ベースから外れている可能性がありますが、準備が整う前にFileSystemWatcherをオンにしている可能性があります。

上記のコードでは、InitializeComponentでEnableRaisingEventsがtrueに設定されています(デザイナーが生成したコードの一部として、私は推測しています)。デザイナは、設計時に有効なパスも設定することを期待して、そのプロパティをデフォルトでtrueに設定します。ただし、設計時に実際のパスを設定しているわけではありません(「マイパス」を使用しているだけです)。FSWは、「マイパス」の検索を開始し、それを見つけることができないため、EndInit()の直後に例外をスローしている可能性があります。

OnStartメソッドで実際のパスを設定しているため、デザイナではEnableRaisingEventsをfalseにする必要があります。パスを設定した後、OnStartメソッドでtrueに設定します。それはあなたがそれが変化を探し始めることを望むときです。

于 2012-05-30T21:07:45.993 に答える
0

filesystemwatcher は完全な信頼を必要とするため、これはセキュリティ上の問題である可能性があります。

于 2012-05-23T15:03:01.243 に答える