class Program
{
FileSystemWatcher _watchFolder;
string sPath = @"D:\TestMonitor";
static void Main(string[] args)
{
Program p = new Program();
Thread t = new Thread(new ThreadStart(p.startActivityMonitoring));
t.Start();
}
private void startActivityMonitoring()
{
_watchFolder = new FileSystemWatcher();
_watchFolder.Path = Convert.ToString(sPath);
_watchFolder.NotifyFilter = System.IO.NotifyFilters.DirectoryName;
_watchFolder.NotifyFilter =
_watchFolder.NotifyFilter | System.IO.NotifyFilters.FileName;
_watchFolder.NotifyFilter =
_watchFolder.NotifyFilter | System.IO.NotifyFilters.Attributes;
_watchFolder.Changed += new FileSystemEventHandler(eventRaised);
_watchFolder.Created += new FileSystemEventHandler(eventRaised);
_watchFolder.Deleted += new FileSystemEventHandler(eventRaised);
_watchFolder.Renamed += new System.IO.RenamedEventHandler(eventRaised);
_watchFolder.EnableRaisingEvents = true;
}
private void eventRaised(object sender, System.IO.FileSystemEventArgs e)
{
switch (e.ChangeType)
{
case WatcherChangeTypes.Changed:
Console.WriteLine(string.Format("File {0} has been modified\r\n", e.FullPath));
break;
case WatcherChangeTypes.Created:
Console.WriteLine(string.Format("File {0} has been created\r\n", e.FullPath));
break;
case WatcherChangeTypes.Deleted:
Console.WriteLine(string.Format("File {0} has been deleted\r\n", e.FullPath));
break;
default: // Another action
break;
}
}
}
当我尝试使用 Console.WriteLine 记录更改时,一个使用 FileSystemWatcher 轮询目录内更改的简单程序,但它不起作用。
不确定是什么导致了这个问题,因为 Console.WriteLine 在任何线程中都能正常工作