| dobon さんとこのサンプルは FileSystemWatcher を「自前のコードで使う」ためのもので
こんなプロパティがありますよ、こうやって使うことができますよ Dispose が必要っすよ
ってなあたりを目に見える形で示すのが目的。
(そうでないとサンプルとして役に立たない)
だから「手で書いてあるコード」がやたらと多くて難しく見えるっす。
既にアドバイスある通りデザイナで FileSystemWatcher を配置すれば、デザイナ画面だけで
- Path や EnableRaisingEvents の初期値が設定できて、
- イベントハンドラもダブルクリックだけで作ってくれて、
- ついでに SynchronizingObject の設定も忘れずに行ってくれて、
手書きするコードなんてほとんどないっす。
デザイナで fileSystemWatcher1 btnStart btnStop を配置して、
デザイナで各部品のプロパティ・イベントを適切に設定すると、
Form1.cs で手書きしなきゃならないのは各ハンドラで1行だけになって、こんな感じ
using System.Diagnostics; // は手書き
namespace Watch
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e)
{
Debug.WriteLine("Change " + e.FullPath);
}
private void fileSystemWatcher1_Created(object sender, System.IO.FileSystemEventArgs e)
{
Debug.WriteLine("Create " + e.FullPath);
}
private void fileSystemWatcher1_Deleted(object sender, System.IO.FileSystemEventArgs e)
{
Debug.WriteLine("Delete " + e.FullPath);
}
private void fileSystemWatcher1_Renamed(object sender, System.IO.RenamedEventArgs e)
{
Debug.WriteLine("Rename " + e.FullPath);
}
private void btnStart_Click(object sender, EventArgs e)
{
fileSystemWatcher1.EnableRaisingEvents = true;
}
private void btnStop_Click(object sender, EventArgs e)
{
fileSystemWatcher1.EnableRaisingEvents = false;
}
}
}
ね、5分もかからないでしょ。
デザイナ画面でどんな操作をしないといけないかは掲示板で説明するには面倒すぎるのでパス。
普通にデザイナを使いこなせるなら簡単そのもの。
|