FileSystemWatcher работа с несколькими директориями в отдельных потоках - C#

Узнай цену своей работы

Формулировка задачи:

Пишу программу, используя класс FileSystemWatcher. Необходимо организовать работу с несколькими директориями. На входе есть массив с этими самыми директориями. Суть проблемы в том, что все созданные экземпляры FileSystemWatcher ведут мониторинг за одной папкой, которая записана последней в текстовом файле с директориями. Подскажите, в чем здесь проблема? Вот кусок кода:
string[] lines = System.IO.File.ReadAllLines(@"C:\Audit\input.txt");  // в этом файле хранятся необходимые директории
            byte count=0; 
            Data data = new Data();  // класс для передачи данных в поток, содержит переменные типа int и string
            Thread[] threads = new Thread[10];
            for (int i = 0; i < lines.Length; i++)
            {
                data.way = lines[i];  data.count = count;     // заполняем класс data ( в поле string вписываем директорию, в поле count - номер)
                threads[count] = new Thread(create_new_watcher); // функция create_new_watcher описана ниже
                threads[count].Name = "Thread " + (count + 1);
                threads[count].Start(data);
                count++; 
            }
 
private static void create_new_watcher(object data)
        {
            Data obj = (Data)data; int i = obj.count; string way = obj.way;
            Console.WriteLine(obj.way); Console.WriteLine(obj.count);
            elements[i] = new FileSystemWatcher(way);
            elements[i].NotifyFilter = NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.Size;
 
            elements[i].Renamed += new RenamedEventHandler(OnRenamed);
            elements[i].Deleted += new FileSystemEventHandler(OnChanged);
            elements[i].Created += new FileSystemEventHandler(OnChanged);
            elements[i].Changed += new FileSystemEventHandler(OnChanged);
            elements[i].EnableRaisingEvents = true;
 
            while (true) ;

Решение задачи: «FileSystemWatcher работа с несколькими директориями в отдельных потоках»

textual
Листинг программы
            for (int i = 0; i < lines.Length; i++)
            {
            Data data = new Data();  // класс для передачи данных в поток, содержит переменные типа int и string

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы