0
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 在任何线程中都能正常工作

4

1 回答 1

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();
    }

在此处输入图像描述

于 2013-01-01T05:58:28.580 回答