FileSystemWatcher::filterがひとつしか指定できないので string arg[0] = "C:\TEMP"; string arg[1] = "*.cpp|*.h|*.txt"; string[] filter = args[1].Split('|'); for (int i = 0; i < filter.Length; i++) { FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = args[0]; watcher.Filter = filter[i]; watcher.IncludeSubdirectories = true; watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName; watcher.Changed += new FileSystemEventHandler(OnFileChanged); watcher.Renamed += new RenamedEventHandler(OnFileChanged); watcher.EnableRaisingEvents = true; } で解決。