![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Wilko |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 4.5.2008 Репутация: нет Всего: нет |
Вопрос состоит в следующем.
Есть директория в которую поступают текстовые файлы. Программе необходимо мониторить эту директорию и записывать информацию из файлов в базу данных. Начинал с начала, вроде бы все сделал(директорию мониторит, файл читает, в базу записывает). Осталось добавить возможность мониторинга нескольких файлов, и тут уперся в проблему, которую сам не смог решить. Файл содержит большие объемы данных(100к+ строк минимум), что значит что необходим дополнительный буфер, куда filesystemwathcer будет складывать инфу о том какие файлы поступили(для обработки). Пока я вижу это так, при евенте от fsw записывать путь к файлу в List. Но вот проблема, как мне также беспрерывно мониторить этот лист на наличие файлов для обработки внутри программы? |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
класс который управляет листом(ты же не имеешь ввиду просто List<T> в который может писать кто угодно? если так то надо переделать) должен оповещать всех подписчиков на событие изменения листа. о том что лист изменился этот класс будет знать потому что именно он и будет менять лист(точнее всем кому надо будут менять лист через этот класс)
|
|||
|
||||
Dennnis |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 23.3.2008 Репутация: нет Всего: 4 |
Скорее всего тут подойдет очередь, в которую fsw будет добавлять имена файлов, а другой поток будет выгребать их из этой очереди и обрабатывать. В этом случае нужно:
создать ManualResetEvent, для которого вызывать метод Set при добавлении файла в очередь. в потоке-обработчике вызывать метод WaitOne, который будет блокировать поток до тех пор пока в очередь не поступит новый файл, примерно так:
Но надо сказать сразу, что здесь нужно использовать потокобезопасную вариант очереди. Это сообщение отредактировал(а) Dennnis - 10.4.2012, 19:14 --------------------
Get Rich or Die Tryin' |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |