Название: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: 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(); } Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: Пантер от Апрель 01, 2010, 13:14 Может много файлов на флешке? Попробуй entryList.
Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: jurtal от Апрель 01, 2010, 13:20 Даже если просто папка пустая - тоже долго...
Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: Пантер от Апрель 01, 2010, 13:28 А из других приложений каталог открывается нормально или тоже с торможением? Имеется ввиду первая загрузка каталога.
Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: jurtal от Апрель 01, 2010, 13:31 Именно первое обращение к каталогу на флешке очень долгое - второе и последующие быстро выполняются.
Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: jurtal от Апрель 01, 2010, 13:32 Из других приложений попробую...
Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: Пантер от Апрель 01, 2010, 13:39 Скорее всего, в других будет то же самое. Если так, то все нормально.
Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: jurtal от Апрель 01, 2010, 13:52 Минута - думаю многовато :).
Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: crossly от Апрель 01, 2010, 14:42 думаю это время уходит на монтирование флэхи... если при последующих обращениях все ок... попробуй смонтировать в консоли и посмотреть как быстро происходит этот процесс...
Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: jurtal от Апрель 01, 2010, 15:18 попробовал - долго происходит
Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: BRE от Апрель 01, 2010, 15:22 попробовал - долго происходит Ну так не "проверяй" таким образом воткнутость флешки. :)Куда лучше проверять присутствие нужной папки и если она есть, читать оттуда список файлов. Это если не заморачиваться со всякими HAL... Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: crossly от Апрель 01, 2010, 15:46 попробовал - долго происходит тогда не понятно каким боком тут qt... как ни крути он будет ждать пока флешка не примонтируется... мот все же стоит заморочится с hal для проверки наличия и монтирования...Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: jurtal от Апрель 01, 2010, 16:37 Неправильно отписал - само монтирование/размонтирование из консоли быстро выполняется. И из кода монтирование/размонтирование быстро. А вот когда после монтирования на флешку лезешь с entryInfoList, вот тогда и тормозит.
Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: jurtal от Апрель 01, 2010, 18:26 Содержимое папки смотрю так:
QDir currentFolder(sPath); currentFolder.setFilter(QDir::Files | QDir::NoDotAndDotDot); QFileInfoList fileInfoList(currentFolder.entryInfoList() ); Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: Пантер от Апрель 01, 2010, 18:35 Можно еще через QDirIterator.
Еще entryInfoList медленнее, чем entryList. Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: jurtal от Апрель 01, 2010, 18:41 Да пробовал уже и просто список файлов... тоже самое... Сделал тест когда маунт делаю с консоли а потом читаю данные из папки в программе... читает также долго.
Название: Re: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters Отправлено: Пантер от Апрель 01, 2010, 18:53 Тогда не заморачивайся. Это уже зависит от перефирии и ОС.
|