Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# FileSystemWatcher CPU usage / 6 сообщений из 6, страница 1 из 1
19.08.2004, 19:07
    #32657715
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# FileSystemWatcher CPU usage
Всем привет.
Буду признателен если поможете решить одну проблемку...

Есть FileSystemWatcher инстанс, определены для него все параметры: фильтр на один единственный файл и только на последнее изменение.

При запуске приложения, использование процессора взлетает до сотни и там вольготно располагается. Тормоза дикие просто. Без него все пучком... Что за грабли? Как эта гадость вообще работет? По идее должен получать сообщения от файловой сситемы, а выглядит так будто он по таймеру сам проверяет.

Код-с:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
_filePath = Environment.CurrentDirectory + "\\" + _fileName;
FSWatcher = new FileSystemWatcher();
FSWatcher.Path =  Environment.CurrentDirectory;
FSWatcher.NotifyFilter = NotifyFilters.LastWrite;
 // Only watch log file. 
FSWatcher.Filter = _fileName;
FSWatcher.EnableRaisingEvents = true
FSWatcher.Changed += new FileSystemEventHandler(OnChanged);
;

Встречал кто нибудь подбное?

Magnus
...
Рейтинг: 0 / 0
19.08.2004, 20:35
    #32657809
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# FileSystemWatcher CPU usage
Увы, толком помочь не могу, но тема интересная. Тем более, что сам несколько раз собирался его использовать, но "обошлось".

Почитал
google , вижу что пишут нехорошее. Norton Antivirus влияет на событие LastWrite каким-то образом, событие приходит гораздо чаще, чем надо и пр. и пр.

Кстати как у Вас? Событие то нормально отрабатывает, не задваивается, не размножается ?
...
Рейтинг: 0 / 0
19.08.2004, 20:36
    #32657810
viper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# FileSystemWatcher CPU usage
Хм... странно никогда ничего подобного не встречал... всегда все работало в пределах допустимого...
_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
19.08.2004, 20:37
    #32657812
viper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# FileSystemWatcher CPU usage
Alexey KudinovУвы, толком помочь не могу, но тема интересная. Тем более, что сам несколько раз собирался его использовать, но "обошлось".

Почитал
google , вижу что пишут нехорошее. Norton Antivirus влияет на событие LastWrite каким-то образом, событие приходит гораздо чаще, чем надо и пр. и пр.

Кстати как у Вас? Событие то нормально отрабатывает, не задваивается, не размножается ?

А вот с антивирусом вопрос интерестный... может он и есть источник проблемы...
...
Рейтинг: 0 / 0
19.08.2004, 22:13
    #32657882
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# FileSystemWatcher CPU usage
Спасибо что откли
Значит так... Все оказалось не совсем так. :)
Точнее совсем не так.
FileSystemWatcher не имел к проблеме никакого отношения. Он как и положено ожидает сообщения и обрабатывает их.

А дело было вот в чем, по сообщению от системы об изменении файла(лог моего сервиса - другой процесс) открывался FIleStream, на его основе создавался StreamReader и читалась последняя запись.
Дабы точно определить позицию для чтения, она запоминалась с предыдущего открытия.
Далее, текущем сеансе позиция потока устанавливалась на запомненную и читалась очередная строка.

Вот тут и нашлись грабли.
Проц начинало колбасить именно после изменении позиции в потоке!!
Поток создавался, устанавливалась позиция, происходило чтение, все закрывалось и очищалось до следующего раза(даже Gc.Collect впихнул от отчаяния:) . Проц зажаривался.

Как настоящий русский программер из анекдота, плюнул и решил переписать весь класс мониторинга :).
Сделал потоки приватными для класса, открываю при создании класса, закрываю в деструкторе. На событиях просто читаю следующую строку.
Все летает :).

НО! Читать то нужно не с начала, а последние строки, поэтому после создания потока устанавливаю текущую позицию в конец. Работает. Проц расслаблен и наслаждается жизнью.
Внимание вопрос :)
Почему установка позиции, ранее, при создании потоков на каждом событии, жрала столько ресурсов? Почему это продолжалось по закрытию потоков?
БАГ или все-таки надо меньше пить и больше спать?

Magnus
...
Рейтинг: 0 / 0
19.08.2004, 22:20
    #32657888
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# FileSystemWatcher CPU usage
Alexey KudinovУвы, толком помочь не могу, но тема интересная. Тем более, что сам несколько раз собирался его использовать, но "обошлось".

Почитал
google , вижу что пишут нехорошее. Norton Antivirus влияет на событие LastWrite каким-то образом, событие приходит гораздо чаще, чем надо и пр. и пр.

Кстати как у Вас? Событие то нормально отрабатывает, не задваивается, не размножается ?
Никаки побочных эффектов не заметил, тот что описывал в начале оказался плодом моего воспаленного воображения. :).
У меня McAfee сканит, никаких претензий с его стороны не заметил.

События приходят нормально, делал простенький стресс-тест(3-4 записи в секунду) - все отследнил четко.
Так что юзайте на здоровье :).
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# FileSystemWatcher CPU usage / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]