FileSystemWatcher теряет файлы в своей очередиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 FileSystemWatcher теряет файлы в своей очереди

Сообщение Anonymous »

Я написал FileSystemWatcher для вызова pgm один раз для каждого файла. Но некоторые мои файлы потеряны. Я тестировал код всего на 10-11 файлах. Удаление файла регистрируется корректно, а создание – нет. Некоторые файлы не записываются. Возможно, есть какие-либо проблемы в реализации моей ЗАДАЧИ?
или есть ли проблемы со службой Windows?

public static FileSystemWatcher m_Watcher;
static BlockingCollection blockingCollection = new BlockingCollection();

protected override void OnStart(string[] args)
{

current_directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
//XmlDocument xml = new XmlDocument();
try
{
strDir = ConfigurationManager.AppSettings["Directory"];
fileMask = ConfigurationManager.AppSettings["FileMask"];
strBatfile = ConfigurationManager.AppSettings["Batch"];
strlog = ConfigurationManager.AppSettings["Log"];

m_Watcher = new FileSystemWatcher();

m_Watcher.Filter = fileMask;
m_Watcher.Path = strDir + "\\";
m_Watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;

m_Watcher.Created += new FileSystemEventHandler(OnCreated);

m_Watcher.Deleted += new FileSystemEventHandler(OnDeleated);
m_Watcher.Renamed += new RenamedEventHandler(OnRenamed);

m_Watcher.EnableRaisingEvents = true;
}
catch (Exception exception)
{
CustomException.Write(CustomException.CreateExceptionString(exception.ToString()));
}

}
public static void OnDeleated(object source, FileSystemEventArgs e)
{
try
{

Log.getLogger("File deleated- Filename :" + e.Name + " at timestamp : " + DateTime.Now.ToString(), strlog);
}
catch (Exception exception)
{
CustomException.Write(CustomException.CreateExceptionString(exception, e.Name));
}
}

private static void OnCreated(object source, FileSystemEventArgs e)
{

var exceptions = new ConcurrentQueue();

try
{

Task.Factory.StartNew(() =>
{
try
{

blockingCollection.Add(e.Name.ToString());

}
catch (Exception)
{
throw;

}

});
Task.Factory.StartNew(() =>
{
try
{

foreach (string value in blockingCollection.GetConsumingEnumerable())
{
System.Diagnostics.Process.Start(Service1.strBatfile);
Log.getLogger("File Processed after executing batch: Filename ->:" + value + " " + "Batch File Executed- > " + Service1.strBatfile + " at timestamp : " + DateTime.Now.ToString(), Service1.strlog);

}
}
catch (Exception)
{
throw;
}

});

}
catch (AggregateException ae)
{

foreach (var ex in ae.InnerExceptions)
{
CustomException.Write(CustomException.CreateExceptionString(ex, e.Name));
}
}
finally
{
m_Watcher.EnableRaisingEvents = true;
}
}


Подробнее здесь: https://stackoverflow.com/questions/316 ... -its-queue
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • FileSystemWatcher теряет файлы в своей очереди
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • FileSystemWatcher теряет файлы в своей очереди
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Мне нужна функциональность, при которой угадывание правильной буквы не теряет жизни, но неправильное угадывание теряет [
    Anonymous » » в форуме Python
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Обновление списка видео после того, как FileSystemWatcher получает новые данные
    Гость » » в форуме C#
    0 Ответы
    43 Просмотры
    Последнее сообщение Гость
  • FileSystemWatcher.Created ничего не делает
    Anonymous » » в форуме C#
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»