в приложении-службе. Я перебираю журнал событий приложения Windows для анализа событий, чтобы отреагировать на входящее сообщение.В случае, если журнал событий заполнен (обычно Windows удаляет достаточно места, удаляя старые записи - это настраивается в настройках eventvwr.exe
), служба всегда запускается в IndexOutOfBoundsException
при выполнении итерации по EventLog.Entries
коллекция.Независимо от того, как я выполняю итерацию (цикл for, использование перечислителя коллекций, копирование коллекции в массив, ...), я не могу избавиться от этого «ошибки».
В настоящее время яУбедитесь, что журнал не переполнен, чтобы служба работала, регулярно удаляя последние несколько элементов, анализируя файл журнала событий и удаляя последние несколько узлов (Не бейте меня, я не мог найти лучшую альтернативу...).
Как выполнить итерацию по коллекции, не пытаясь получить доступ к уже удаленным записям?
Возможно, существует более элегантный метод?Я только пытаюсь получить доступ к журналам, записанным в течение последних x
секунд (даже LINQ не смог выбрать те из них, когда журнал заполнен - то же исключение), может ли это помочь?
Спасибо за любые советы и советы
Франк
Редактировать: я забыл упомянуть, что я предполагаю, что циклы обращаются к записям, которые удаляются во время итерации Windows.По сути, именно поэтому я попытался клонировать коллекцию.Возможно, есть способ заблокировать коллекцию на некоторое время только для моего приложения?