![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Dogevec |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 22.8.2008 Репутация: нет Всего: нет |
Отслеживаю изменения в контролируемой директории при помощи FileSystemWatcher. При создании, изменении, переимонвании и удалении файлов/поддиректорий в контролируемой директории, всё хорошо, приходит по одному сообщению. Но при копировании файла в контролируемую директорию приходит сообщении о создании файла/директории, а так же 1-2 сообщения о его изменении. Как избежать этого? Дело в FileSystemWatcher или это примудрости самой OS Windows ?
Код создания класса FileSystemWatcher :
Это сообщение отредактировал(а) Dogevec - 15.12.2011, 11:06 |
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
скорее всего это Windows, так как для того чтоб скопировать файл, нужно сначала создать другой файл, в который записать содержимое исходного файла. Тоже самое и с папкой. Кстати, если Вы копируете папку, например, с 2-мя, 3-мя, n, подпапками, у вас возникает 2, 3, и N событий создания папки?
-------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
Dogevec |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 22.8.2008 Репутация: нет Всего: нет |
Только что проверил. Да, при копировании приходят сообщения о создании всех вложенных папках и файлах.
Добавлено через 1 минуту и 25 секунд То есть, как я понимаю, в директории, куда копируется файл, создаётся темповкий файл и целевой файл. Затем данные заносяттся в темповский, а из него уже копируются в целевой? |
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Видимо никак, все работает правильно. А зачем вам этого избегать, для чего вам это надо? Все зависит от задачи... -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
Dogevec |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 22.8.2008 Репутация: нет Всего: нет |
Необходимо мониторить изменения в расшаренной директории, и отправлять отчёт об этом на почту(список изменений за установленный интервал). И получается, что приходят два сообщения, о создании и изменении файла при копировании, что будет приводить просто к путанице в общем списке производимых операций...
|
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Относительно расшаренной директории, все происходит правильно, к томуже Вы не знаете, из какой папки производится копирование. Для отчета о копировани нужно знать папку источник и приемник (иначе как писать отчет? нужно что-то типа - скопировано от туда-то вот это, вот сюда. ). Приемник известен, а источник - видимо нет. Поэтому относительно расшареной папки (как и относительно любой) есть только операция создания и изменения.
А если у вас есть возможность получить папку источник, тогда просто считаете число вложеных файлов, и при копировании оно должно быть равным числу происходящих событий. Когда все события произошли, пишите в отчет. Это сообщение отредактировал(а) RastaDja - 15.12.2011, 14:39 -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Нет, создается только целевой (событие Created) (в чем смысл темп файла?) и в него записываются данные ресурса (событие Changed). -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [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. |