如何调试FileSystemWatcher c#

时间:2017-08-03 21:17:10

标签: filesystemwatcher

有人可以解释我如何调试它吗?

我已经构建了一个监视文件夹的Windows服务,当在该文件夹中创建文件时,它会将新创建的文件移动到另一个文件夹。很简单,很有效。我现在尝试使用功能填充它,我开始在事件查看器中抛出通用IOExpections,所以我想尝试调试。但我遇到的问题是在调试期间何时在目录中创建新文件。

这是我目前的代码

在单步执行期间我应该停在哪一行,将我的新文件放在目录中,然后继续调试以便它获取创建的文件?

public void OnDebug()
    {
        OnStart(null);
    }

    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    protected override void OnStart(string[] args)
    {
        string pathToWatch = ConfigurationManager.AppSettings["DirectoryToWatch"];

        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = pathToWatch;
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName;
        watcher.Created += new FileSystemEventHandler(FileCreated);
        watcher.EnableRaisingEvents = true;
    }

    private void FileCreated(object source, FileSystemEventArgs e)
    {
        try
        {
            DateTime dt = File.GetCreationTime(e.FullPath);
            File.Move(e.FullPath.ToString(), ConfigurationManager.AppSettings["DirectoryToMoveTo"] + e.Name + dt.ToString());
            LogEvent($"New file found and moved \n {e.FullPath.ToString()}");
        }
        catch (IOException ex)
        {
            LogEvent(ex.ToString());
        }           
    }

1 个答案:

答案 0 :(得分:0)

您可以在函数FileCreated中添加断点开始。

我建议你在

添加一个断点
  

DateTime dt = File.GetCreationTime(e.FullPath);

在正在监视的目录中创建新文件时,会通知FileSystemWatcher并调用函数FileCreated。

我还建议您记录移动的目标路径。只是为了确保它是一条有效的道路。