2011-09-12 191 views
0

我遇到了文件系統監視器沒有捕獲添加到文件夾中的第一個文件,但每個後續操作都正常觸發的問題。FileSystemWatcher在第二次更改後觸發事件,但不是第一次

我正在看的文件夾位於網絡共享上。

代碼:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 

namespace RTTService 
{ 
    class FileSystemMonitors : IDisposable 
    { 
     FileSystemWatcher WatchFolder = new FileSystemWatcher(); 
     public void StartMonitoringDropFolder() 
     { 
      WatchFolder.Path = @"\\<<NETWORKED SHARE>>\inetpub\mailroot\"; 
      WatchFolder.NotifyFilter = WatchFolder.NotifyFilter | NotifyFilters.FileName; 
      WatchFolder.NotifyFilter = WatchFolder.NotifyFilter | NotifyFilters.Attributes; 

      WatchFolder.Created += new FileSystemEventHandler(WatchFolder_Action); 
      WatchFolder.Deleted += new FileSystemEventHandler(WatchFolder_Action); 
      WatchFolder.Changed += new FileSystemEventHandler(WatchFolder_Action); 

      WatchFolder.EnableRaisingEvents = true; 


     } 

     void WatchFolder_Action(object sender, FileSystemEventArgs e) 
     { 
      if (e.ChangeType == WatcherChangeTypes.Changed) 
      { 
       using (Email Email = new Email()) 
       { 
        Email.ParseInterpretStoreDropFolderForAllMessages(false, false, false); 
       } 
      } 
     } 

     public void Dispose() 
     { 
      WatchFolder.Dispose(); 
     } 
    } 
} 
+3

如果在if(e.ChangeType == ...)之前記錄包含「e.FullPath」和「e.ChangeType」的行,該怎麼辦?這種行爲對我來說是不可重現的。它是普通的Windows共享還是SaMBa實現? – CodeCaster

+0

爲什麼你在尋找Changed時還想創建? –

+0

我切換到使用更改而不是創建,因爲創建的事件從未被添加到文件夾時被觸發。但是,改變的事件是。編輯:這是一個Windows共享。 –

回答

0

是否有可能創建並啓用FileSystemWatcher的前的文件存在?

+0

不是。我使用Windows資源管理器觀看文件夾。 –

相關問題