9

ファイル サイズの変化を監視するプログラムを作成する必要があります。私はすでに単純な Windows サービスとファイルシステムウォッチャーを作成したので、その概念に慣れてきました。ファイルサイズをチェックするコードも作成しました(フォームボタンで作成しました)が、ファイルシステムウォッチャーにはまだ実装していません。ファイルサイズを監視するファイルウォッチャーを持つ Windows サービスを作成するにはどうすればよいですか? Windows サービス内に filesystemwatcher を配置し、OnStart メソッドを介してウォッチャーを呼び出す必要がありますか?

4

3 に答える 3

17

Windows のサービスを作成している場合は、プログラムで作成する必要があります。私は通常、サービスからフォームを除外し、それらが通信するための別のインターフェイスを作成します。現在、FileSystemWatcher にはサイズだけを監視するイベントがないため、既存のファイルへの変更を確認するために FileSystemWatcher.Changed に関連付けるメソッドを作成する必要があります。OnStart メソッドでコントロールを宣言して初期化し、イベントも結び付けます。OnStop メソッドでクリーンアップ コードを実行します。次のようになります。

protected override void OnStart(string[] args)
{
FileSystemWatcher Watcher = new FileSystemWatcher("PATH HERE");
Watcher.EnableRaisingEvents = true;
Watcher.Changed += new FileSystemEventHandler(Watcher_Changed);
} 

// This event is raised when a file is changed
private void Watcher_Changed(object sender, FileSystemEventArgs e)
{
// your code here
}

また、FileSystemWatcher は 1 つのファイルに対して複数のイベントを発生させることにも注意してください。そのため、デバッグ中はパターンを監視して回避してください。

于 2012-08-17T03:39:52.643 に答える
3

設定することにより、OnStart メソッドで filesystemwatcher オブジェクトを有効にするだけです。

EnableRaisingEvents = true;

次に、イベントを処理します。それはそれを行う必要があります。

于 2012-08-17T03:40:07.277 に答える
1

次のように変更されたものを処理するデリゲートを作成できます

myWatcher.Changed += new FileSystemHandler(FSWatcherTest_Changed);

private void FSWatcherTest_Changed(object sender, 
                System.IO.FileSystemEventArgs e)
{
    //code here for newly changed file or directory
}

等々

この記事を読むことをお勧めしますhttp://www.codeproject.com/Articles/18521/How-to-implement-a-simple-filewatcher-Windows-serv

on_startまた、Windowsサービスでこのデリゲートを持っています

于 2012-08-17T03:42:00.190 に答える