2017-08-03 42 views
0

有人可以解释我如何调试?如何调试FileSystemWatcher c#

我已经构建了一个监视文件夹的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()); 
     }   
    } 

回答

0

您可以从函数FileCreated内添加断点开始。

我建议你在

的DateTime DT = File.GetCreationTime(e.FullPath)添加一个断点;

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

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

+0

嗨,我正在努力在调试过程中使FileCreated事件触发器。我不知道什么时候应该在文件夹中放置一个新文件,因为我正在逐步完成代码。 –

+0

您不必额外做任何事情来触发该事件。初始化完成后,创建一个文件。但是,您无法直接通过逐步达到该事件。 尝试这样做: 1.在FileCreated的开头添加一个断点。 2.运行您的应用程序 3.在正在监视的文件夹中创建一个文件 4.您现在应该看到控件到达您的断点。现在,您可以从这一点开始浏览代码。 –