Vb .NET несколько экземпляров filesystemwatch
Я использую следующий код для мониторинга папки с помощью Filesystemwatch
Dim foldertowatch as New FileSystemWatcher() foldertowatch.Path = source_folder With foldertowatch 'File type .Filter = source_prefix & "*." & source_file_type 'Notify Filter .NotifyFilter = .NotifyFilter Or NotifyFilters.FileName .NotifyFilter = .NotifyFilter Or NotifyFilters.DirectoryName 'To watch sub directories.... .IncludeSubdirectories = sub_folder 'Handle new file created AddHandler .Created, AddressOf Process .EnableRaisingEvents = True End With
И, используя приведенные ниже подпрограммы для обработки созданных событий
Private Sub Process(ByVal Source As Object, ByVal evt As FileSystemEventArgs) 'To do... End Sub
Теперь дело доходит до того, что мне нужно следить за несколькими папками, каждая папка с разными типами файлов и разными процессами. Например
Источник 1 - монитор pdf-файла при создании - Что нужно сделать: переименовать и сохранить в пункт назначения 1
Источник 2 - монитор txt-файла при создании - Что нужно сделать: переименовать и сохранить в пункт назначения 2
Источник 3 - мониторинг файла excel при создании - Что нужно сделать: переименовать и сохранить в пункт назначения 3
и так далее...
Что я уже пробовал:
Я попытался создать несколько экземпляров Filesystemwatch
Dim foldertowatch(total_items) As FileSystemWatcher For i = 0 To 10 foldertowatch(i) = New FileSystemWatcher() foldertowatch(i).Path = source(i) With foldertowatch(i) 'File type .Filter = source_prefix(i) & "*." & source_file_type(i) 'Notify Filter .NotifyFilter = .NotifyFilter Or NotifyFilters.FileName .NotifyFilter = .NotifyFilter Or NotifyFilters.DirectoryName 'To watch sub directories.... .IncludeSubdirectories = sub_folder(i) 'Handle new file created AddHandler .Created, AddressOf Process .EnableRaisingEvents = True End With Next
Но я не знаю, как справиться с событиями, вызванными из разных инстанций. В принципе, как я узнаю, какой экземпляр вызывает событие, чтобы продолжить переименование/сохранение в правильную папку.