2017-08-03 41 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.您現在應該看到控件到達您的斷點。現在,您可以從這一點開始瀏覽代碼。 –