在C#中调试时,FileSystemWatcher没有访问断点

时间:2014-01-29 08:13:24

标签: c# visual-studio-2010 debugging text-files filesystemwatcher

我有一个包含FileSystemWatcher的方法来观察文本文件中的任何更改。这是我的方法。

public static void RunWatcher()
{
    FileSystemWatcher watcher = new FileSystemWatcher();
    watcher.Path = "D:\\CDR File";
    watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
               | NotifyFilters.FileName | NotifyFilters.DirectoryName;
    watcher.Filter = "*.txt";
    watcher.Changed += new FileSystemEventHandler(OnChanged);
    watcher.EnableRaisingEvents = true;
}

这是我从RunWatcher()方法调用的方法..

private static void OnChanged(object source, FileSystemEventArgs e)
{
    int totalLines = File.ReadLines(FileToCopy).Count();
    int newLinesCount = totalLines - ReadLinesCount;
    File.ReadLines(FileToCopy).Skip(ReadLinesCount).Take(newLinesCount);
    ReadLinesCount = totalLines;

    Console.WriteLine("Hello World");
    Console.ReadLine();
}

现在我在应用程序的main方法中调用RunWatcher()方法并在RunWatcher()方法中放置一个断点。但是在调试时我无法调用OnChanged ..问题是什么?为什么它没有得到调试并点击braekpoint?

以下是我根据Hans Passant的建议尝试的内容

        string FileToCopy = "D:\\BEML.txt";

        if (System.IO.File.Exists(FileToCopy) == true)
        {
            var fs = new FileStream(FileToCopy, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
            using (var reader = new StreamReader(fs))
            {
                string line;
                string rawcdr;

                while ((line = reader.ReadLine()) != null)
                {
                }
            }
          }

1 个答案:

答案 0 :(得分:1)

不会从RunWatcher调用OnChanged。事件处理程序的调用由运行时在后台处理。 所以你需要在OnChanged中设置断点。