退出文件监视器创建文件时

时间:2014-10-01 09:03:26

标签: c# asp.net

我正在使用文件观察程序。创建文件时,文件观察程序应该停止,直到再次调用它。我有以下代码正在观看,循环不会停止。

    public void startwatch()
    {
            string path = "C:\\testwatcher\\";
            FileSystemWatcher watcher = new FileSystemWatcher();

            watcher.Path = path;
            watcher.EnableRaisingEvents = true;
            watcher.IncludeSubdirectories = false;
            watcher.Filter = "*.*"; 
            watcher.Created += watcher_Created;
            while (true) ;
    }
    static void watcher_Created(object sender, FileSystemEventArgs e)
    {
        string FileName = ("C:\\testfilescrated\\");
        string text = File.ReadAllText(e.FullPath);
        File.WriteAllText(FileName, text);
    }

我想要做的是while循环应该在创建文件时结束。

1 个答案:

答案 0 :(得分:1)

不要使用繁忙的循环,这会不必要地占用CPU。您可以使用等待句柄,例如使用ManualResetEvent's WaitOne() method

ManualResetEvent _resetEvent;

public void StartWatch()
{
    // Start watching...

    // Wait until signaled.
    _resetEvent = new ManualResetEvent(false);
    _resetEvent.WaitOne();
}

void watcher_Created(object sender, FileSystemEventArgs e)
{
    // Handle your file...

    // And signal.
    _resetEvent.Set();  
}