Russian Qt Forum
Ноябрь 24, 2024, 22:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Тормоза при использовании QProcess и QFileInfoList QDir::entryInfoList ( Filters  (Прочитано 7907 раз)
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();
}

Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Апрель 01, 2010, 13:14 »

Может много файлов на флешке? Попробуй entryList.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
jurtal
Гость
« Ответ #2 : Апрель 01, 2010, 13:20 »

Даже если просто папка пустая - тоже долго...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #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 »

Из других приложений попробую...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #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() );

Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #14 : Апрель 01, 2010, 18:35 »

Можно еще через QDirIterator.
Еще entryInfoList медленнее, чем entryList.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 23.