2016-06-29 4 views
0

Я использовал файл Бодрствующего дежурить на папку для создания файла, мой код ниже: -Asp .net файл наблюдающий скачкообразное поведение

_watcher = new FileWatcher(); 
      _watcher.Path = ConfigurationManager.AppSettings["LandingArea"];    
      _watcher.NotifyFilter = 
       NotifyFilters.CreationTime | 
       NotifyFilters.LastWrite | 
       NotifyFilters.FileName | 
       NotifyFilters.DirectoryName | 
       NotifyFilters.LastAccess; 
      _watcher.Filter = "*.xml"; 
      _watcher.EnableRaisingEvents = true; 
      _watcher.Created += _watcher_Created; 

------------ ----------- Событие ниже ----------------------

private void _watcher_Created(object sender, System.IO.FileSystemEventArgs e) 
     { 
      DataAccessLayer.InsertFileToDatabase(); 
     } 

Мой вопрос: я получаю 3 файлы в одно и то же время, и только 1 из 3 файлов вставляется в базу данных, что означает, что наблюдатель файлов активировал событие только для 1 файла, хотя у меня есть 3 файла.

Любая помощь приветствуется здесь.

ответ

0

Вы игнорируете FileSystemEventArgs при вызове функции InsertFileToDatabase. Я подозреваю, что в этом методе может быть ошибка в логике.

События args несут полный путь к новому файлу, а также информацию о том, какие изменения произошли на нем. Я предлагаю вам полагаться на этот объект, а не на пользовательскую логику.

Это означает, что файл watcher активировал событие только для 1 файла, хотя у меня есть 3 файла.

Это только косвенное заключение, и это может быть неправильно. Я предлагаю вам проверять обработчик событий и отслеживать полный путь и тип изменения из аргументов событий, и это приведет вас к решению.

+0

Спасибо за ответ, что касается ответа, я не проигнорировал FileSystemEventArgs, я использую его внутри метода InsertFiletoDatabase, просто написал здесь фрагмент кода, а не фактический код: - – Rohit

+0

Можете ли вы проверить содержимое событийных аргументов и вызывает обработчик событий, чтобы убедиться, сколько раз и с какими данными он срабатывает? –

+0

Да, я сделал это, и заключение - это событие, которое запускается только один раз, и еще одна вещь хотела бы указать, что время создания для всех трех файлов точно такое же, как и миллисекунды. – Rohit