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;
}
}
}
一个简单的程序使用FileSystemWatcher在我尝试使用Console.WriteLine记录更改时轮询目录内的更改但它不起作用。
由于Console.WriteLine在任何线程
中运行良好,因此不确定导致此问题的原因答案 0 :(得分:4)
您的程序在启动主题后立即退出。您需要保持程序运行。 一种简单的方法是包含一个Console.ReadLine来阻止程序退出。
static void Main(string[] args)
{
Program p = new Program();
Thread t = new Thread(new ThreadStart(p.startActivityMonitoring));
t.Start();
Console.Writeline("Press enter to exit");
Console.ReadLine();
}