![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
snakesoft |
|
||||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 26.5.2007 Репутация: нет Всего: нет |
Всем привет!
Пишу утилиту для наблюдения за изменениями на подключенных съемных устройствах Столкнулся с такой проблемой. Если запустить программу, подключить одну флэшку скопировать например на нее несколько файлов, затем подключить еще одну флэшку, выполнить те же самые действия со второй флэшкой, далее извлечь первую то после перечисленных действий программа слегка подвисает, но продолжает фиксировать все дальнейшие изменения на флэшках Подозреваю, что проблема не в совсем корректном завершении потока в:
Если использовать
Все работает нормально и подвисаний у программы нет, но в этом случае как я понимаю я не освободил память потока.... Помогите пожалуйста решить проблему, исходник прилагается Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
||||
|
|||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
Вот здесь и подвисает. Ждет пока поток отработает. FreeOnTerminate Добавлено через 3 минуты и 30 секунд p.s. Возможно неправильно организованна остановка потока. -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
snakesoft, посмотрел твой код.
Твоя проблема в ReadDirectoryChangesW. Эта функция,ожидающая изменений в каталоге, не возвращает управление после отключения флешки. Отсюда и зависание WaitFor, в основном потоке, ждет завершения потока TFileThread, а тот в свою очередь висит на ReadDirectoryChangesW. Вариантов исправить это несколько. 1. Использовать ReadDirectoryChangesW в асинхронном режиме, тогда дополнительные потоки вообще не нужны. 2. Убивать поток через TerminateThread 3. либо ... еще незнаю, надо смотреть. -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
snakesoft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 26.5.2007 Репутация: нет Всего: нет |
Спасибо, что помог!
Попробовал
Всё ок |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
Не очень хороший вариант, имхо. -------------------- There are always someone smarter than you... |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
Но зато не требует серьезной переделки программы. А вообще да, надо найти способ раздуплить ReadDirectoryChanges. Асинхронный вариант тоже, по моему, не решает всего. Будет время - проверю. -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
Illusion Dolphin |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 4 Всего: 63 |
У меня работает оно так: отдельный поток,
Вроде работает стабильно, без задержек. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||
|
|||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
Illusion Dolphin да, это один из вариантов.
Я пытался присобачить порт завершения, но ... Нормального русскоязычного описания функций не нашел, а в англицкой тарабарщине, от меня, смысл, порой, ускользает. Да и не уверен был что поможет, поэтому не старался. Illusion Dolphin спасибо, подтолкнул в нужном направлении. -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |