解决C#中FileSystemWatcher类的Changed事件触发多次的问题

public static void WatchFile()

{

FileSystemWatcher watcher = new FileSystemWatcher();

watcher.Path = "E:/Work/Test/source";

watcher.Filter = "*.txt";

watcher.NotifyFilter = NotifyFilters.Size;

watcher.Changed += new FileSystemEventHandler(Change_Watch);

watcher.EnableRaisingEvents = true;

}

public static void Change_Watch(object o, FileSystemEventArgs args)

{

string sourcePath = "E:/Work/Test/source/ceshi.txt";

string targetPath = "E:/Work/Test/target/ceshi.txt";

var watcher = o as FileSystemWatcher;

watcher.EnableRaisingEvents = false;

File.Copy(sourcePath, targetPath, true);

watcher.EnableRaisingEvents = true;

}