![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| elena1212 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.8.2011 Репутация: нет Всего: нет |
Здравствуйте!
Прошу помощи вот по какому вопросу. Есть программа, которая с некоторой периодичностью (например, каждую минуту) просматривает каталог с целью выяснить, появились ли с момента запуска программы в каталоге или в подкаталогах любого уровня вложенности новые файлы. Если новые файлы обнаружены, то сведения о файлах пишутся в лог. Процедура сканирования работает следующим образом:
Здесь t и tmax - глобальные переменные: tmax хранит последнее время изменения каталога, а в t записывается новое время изменения катклога. Алгоритм рекурсивного обхода заимствован и выполнен по мотивам http://msdn.microsoft.com/ru-ru/library/bb513869.aspx. Задачу свою программа решает, но имеются проблемы. Во-первых, с ростом количества каталогов и уровня вложенности растет загрузка ЦП, но это мне представляется объяснимым, поскольку в данном случае растет количесво операций. Во-вторых, монотонно возрастает количество используемой памяти. Это приводит к тому, что через несколько часов нагрузка на ОС становится просто непреемлемой. Пожалуйста, объясните, из-за чего происходит постоянный рост памяти?? Неужели из-за объявлений FileInfo[] Fi и DirectoryInfo[] folder? Подскажите, пожалуйста, как мне решить возникшую проблему? Или решать поставленную задачу необходимо другими средствами? Большое спасибо! |
|||
|
||||
| WarHog |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.10.2007 Где: Воронеж Репутация: нет Всего: 2 |
а на FileSystemWatcher не смотрели? на появление файла/поддиректории ловите ивент Created и пишете в лог.
--------------------
|
|||
|
||||
| elena1212 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.8.2011 Репутация: нет Всего: нет |
Да, смотрела, спасибо, сейчас как раз разбираюсь с этим, программный код еще не готов. Только я по безграмотности на класс FileSystemWatcher "наткнулась" уже в процессе поиска решения вышеозначенной проблемы. Надеюсь, решу с его помощью свою задачу более грамотно. И все равно это явление с памятью не дает мне покоя... |
|||
|
||||
| elena1212 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.8.2011 Репутация: нет Всего: нет |
С FileSystemWatcher вышло лучше! Есть некоторое неудобство в том, что объект данного класса нацелен на слежение за каталогом (позволяет отслеживать создание/удаление/изменение/переименование файлов и подкаталогов в нем), но не за его подкаталогами! Так как мне нужно следить за всеми подкаталогами любого уровня вложенности, я вынуждена при запуске приложения обойти все подкаталоги, для каждого создать объект класса FileSystemWatcher и указать каждому свой Path. И если подкаталоги переименовыаются, Path нужно менять. А если создаются новые подкаталоги, для них приходится досоздавать новые объекты FileSystemWatcher со своими Path. В моем случае это не беда, даже если таких объектов 1000, памяти требуется не так много (около 17000 КБ), а у меня больше не будет (а если мониторить таким образом, к примеру, все жесткие диски, нужно, по всей видимости, прибегать к другим средствам). Сейчас у меня "мониторят" 230 объектов FileSystemWatcher, загрузка ЦП 0, памяти 500 КБ.
Это сообщение отредактировал(а) elena1212 - 14.8.2011, 08:36 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |