jurtal
Гость
|
|
« : Апрель 01, 2010, 12:54 » |
|
Столкнулся со следующей проблеммой. Делаю по таймеру маунт и размаунт флешки (чтоб проверить воткнул ее пользователь или вытащил) . Когда она воткнута и я ее замаунтил, пытаюсь получить в другой функции список файлов в одной из папок на флешке (QFileInfoList QDir::entryInfoList). Проблема в том, что функция entryInfoList выполняется порядка минуты... Само собой UI висит и ждет, пока она отработает. Есть у кого-нибудь понимание, что происходит?
void func() { QProcess umountproc; umountproc.start("umount " + "/dev/sdc1"); umountproc.waitForFinished(500); umountproc.close();
// QProcess mountproc; mountproc.start("mount -t vfat " + "/dev/sdc1" + " " + "/media"); mountproc.waitForFinished(500); mountproc.close(); }
|
|
|
Записан
|
|
|
|
Пантер
|
|
« Ответ #1 : Апрель 01, 2010, 13:14 » |
|
Может много файлов на флешке? Попробуй entryList.
|
|
|
Записан
|
1. Qt - Qt Development Frameworks; QT - QuickTime 2. Не используйте в исходниках символы кириллицы!!! 3. Пользуйтесь тегом code при оформлении сообщений.
|
|
|
jurtal
Гость
|
|
« Ответ #2 : Апрель 01, 2010, 13:20 » |
|
Даже если просто папка пустая - тоже долго...
|
|
|
Записан
|
|
|
|
Пантер
|
|
« Ответ #3 : Апрель 01, 2010, 13:28 » |
|
А из других приложений каталог открывается нормально или тоже с торможением? Имеется ввиду первая загрузка каталога.
|
|
|
Записан
|
1. Qt - Qt Development Frameworks; QT - QuickTime 2. Не используйте в исходниках символы кириллицы!!! 3. Пользуйтесь тегом code при оформлении сообщений.
|
|
|
jurtal
Гость
|
|
« Ответ #4 : Апрель 01, 2010, 13:31 » |
|
Именно первое обращение к каталогу на флешке очень долгое - второе и последующие быстро выполняются.
|
|
|
Записан
|
|
|
|
jurtal
Гость
|
|
« Ответ #5 : Апрель 01, 2010, 13:32 » |
|
Из других приложений попробую...
|
|
|
Записан
|
|
|
|
Пантер
|
|
« Ответ #6 : Апрель 01, 2010, 13:39 » |
|
Скорее всего, в других будет то же самое. Если так, то все нормально.
|
|
|
Записан
|
1. Qt - Qt Development Frameworks; QT - QuickTime 2. Не используйте в исходниках символы кириллицы!!! 3. Пользуйтесь тегом code при оформлении сообщений.
|
|
|
jurtal
Гость
|
|
« Ответ #7 : Апрель 01, 2010, 13:52 » |
|
Минута - думаю многовато .
|
|
|
Записан
|
|
|
|
crossly
Гость
|
|
« Ответ #8 : Апрель 01, 2010, 14:42 » |
|
думаю это время уходит на монтирование флэхи... если при последующих обращениях все ок... попробуй смонтировать в консоли и посмотреть как быстро происходит этот процесс...
|
|
|
Записан
|
|
|
|
jurtal
Гость
|
|
« Ответ #9 : Апрель 01, 2010, 15:18 » |
|
попробовал - долго происходит
|
|
|
Записан
|
|
|
|
BRE
Гость
|
|
« Ответ #10 : Апрель 01, 2010, 15:22 » |
|
попробовал - долго происходит
Ну так не "проверяй" таким образом воткнутость флешки. Куда лучше проверять присутствие нужной папки и если она есть, читать оттуда список файлов. Это если не заморачиваться со всякими HAL...
|
|
|
Записан
|
|
|
|
crossly
Гость
|
|
« Ответ #11 : Апрель 01, 2010, 15:46 » |
|
попробовал - долго происходит
тогда не понятно каким боком тут qt... как ни крути он будет ждать пока флешка не примонтируется... мот все же стоит заморочится с hal для проверки наличия и монтирования...
|
|
|
Записан
|
|
|
|
jurtal
Гость
|
|
« Ответ #12 : Апрель 01, 2010, 16:37 » |
|
Неправильно отписал - само монтирование/размонтирование из консоли быстро выполняется. И из кода монтирование/размонтирование быстро. А вот когда после монтирования на флешку лезешь с entryInfoList, вот тогда и тормозит.
|
|
|
Записан
|
|
|
|
jurtal
Гость
|
|
« Ответ #13 : Апрель 01, 2010, 18:26 » |
|
Содержимое папки смотрю так:
QDir currentFolder(sPath); currentFolder.setFilter(QDir::Files | QDir::NoDotAndDotDot);
QFileInfoList fileInfoList(currentFolder.entryInfoList() );
|
|
|
Записан
|
|
|
|
Пантер
|
|
« Ответ #14 : Апрель 01, 2010, 18:35 » |
|
Можно еще через QDirIterator. Еще entryInfoList медленнее, чем entryList.
|
|
|
Записан
|
1. Qt - Qt Development Frameworks; QT - QuickTime 2. Не используйте в исходниках символы кириллицы!!! 3. Пользуйтесь тегом code при оформлении сообщений.
|
|
|
|