2016-02-17 18 views
-2

我從這裏找到例子是工作的罰款寫了FileSystemWatcher的,沿着線:創建多個FileSystemWatcher的情況下,動態

Public monitor As FileSystemWatcher 
monitor = New System.IO.FileSystemWatcher() 
monitor.Path = c:\temp\ 
monitor.NotifyFilter = IO.NotifyFilters.DirectoryName 
monitor.NotifyFilter = monitor.NotifyFilter Or IO.NotifyFilters.FileName 
monitor.NotifyFilter = monitor.NotifyFilter Or IO.NotifyFilters.Attributes 

'Add handlers 
AddHandler monitor.Changed, AddressOf fileevent 
AddHandler monitor.Created, AddressOf fileevent 
AddHandler monitor.Deleted, AddressOf fileevent 

'Start watching 
monitor.EnableRaisingEvents = True 

什麼,我對這個正在擴大監視多個文件夾中掙扎,但沒有除了在運行時知道要監視多少個文件夾。

這個問題似乎掩蓋它在C# Multiple Configurable FileSystemWatcher methods

但我的經驗不足是迄今爲止阻止我管理這個翻譯成VB.NET

+0

您正在努力處理哪個特定部分。這不是翻譯服務。唯一主要的語法區別是'fsw.Created + = file_OnCreated;'應該使用'AddHandler fsw.Created,file_OnCreated'等。 –

+1

http://stackoverflow.com/q/24578937/1070452也可以從問題中學習 – Plutonix

+0

對不起@MattWilko - 這不是我正在努力的處理程序,它是從一組文件夾動態創建多個FileSystemWatchers。監視可能在運行時定義的未知數量的路徑中的多個路徑。我正在尋找如何監視多個路徑的VB.NET示例,而不是如何添加處理程序。我有監控單個文件夾或多個文件夾的工作代碼,如果我有一個已知的固定數量的文件夾,它是動態創建多個監視器的陣列或其他我正在努力的路徑列表 – Andrew

回答

0

與馬特Wilko促使推我累了大腦進一步我找到了解決方案,謝謝。

Private fsWatchers As New List(Of FileSystemWatcher)() 

Public Sub AddWatcher(wPath As String) 
    Dim fsw As New FileSystemWatcher() 
    fsw.Path = wPath 
    AddHandler fsw.Created, AddressOf logchange 
    AddHandler fsw.Changed, AddressOf logchange 
    AddHandler fsw.Deleted, AddressOf logchange 
    fsWatchers.Add(fsw) 
End Sub 

與控制器,看起來像:

Public Sub logchange(ByVal source As Object, ByVal e As System.IO.FileSystemEventArgs) 
    'Handle change, delete and new events 
    If e.ChangeType = IO.WatcherChangeTypes.Changed Then 
     WriteToLog("File " & e.FullPath.ToString & " has been modified") 
    End If 

    If e.ChangeType = IO.WatcherChangeTypes.Created Then 
     WriteToLog("File " & e.FullPath.ToString & " has been created") 
    End If 

    If e.ChangeType = IO.WatcherChangeTypes.Deleted Then 
     WriteToLog("File " & e.FullPath.ToString & " has been deleted") 
    End If 
End Sub 

(根據您的需要從陣列,XML文件或表格列表)然後調用AddWatcher與每個路徑的監測,當你」已添加所有路徑來設置您的過濾器並開始監控:

For Each fsw In fsWatchers 
     fsw.NotifyFilter = IO.NotifyFilters.DirectoryName 
     fsw.NotifyFilter = watchfolder.NotifyFilter Or IO.NotifyFilters.FileName 
     fsw.NotifyFilter = watchfolder.NotifyFilter Or IO.NotifyFilters.Attributes 
     fsw.EnableRaisingEvents = True 
    Next 
+0

可悲的是,這不是對任何人訪問有用的答案,所以我投票結束這個問題。 –

+0

@MattWilko ??這對我來說會很有用。在任何地方都沒有其他的例子,我發現如何在VB.NET中動態地添加多個文件觀察者,這是一個答案。像我這樣的其他人使用這個網站來尋找例子,這是一個例子。 – Andrew

+0

但問題的實質是在運行時添加多個對象,其中有很多示例。 –

相關問題