HTTP_Get
странно себя ведёт когда программа находится свёрнутой в трей
на скорости в 100 мбит внезапно начинает качать по нескольку килобайт в сек, разворачиваешь прёт во всю скорость
исходники тут
Этот топик читают: Гость
Ответов: 1528
Рейтинг: 57
|
|||
карма: 0 |
|
Google
vip
|
#1.1контекстная реклама от партнеров
|
Ответов: 3889
Рейтинг: 362
|
|||
карма: 1 |
|
Ответов: 1528
Рейтинг: 57
|
|||
не выкладывал т.к. всё равно проверить просто так не получится
вот полный вариант удалено прога должна лежать именно по этому пути C:lhttpdhtdocs
------------ Дoбавленo в 12.59: [flood]сервер для проверки ddn.org.ua:9999[/flood] ------------ Дoбавленo в 14.04:
для наглядности ------------ Дoбавленo в 05.25: Вопрос актуален, программа уже давно написана и работает, но когда она свёрнута она находится какбудто в заторможенном состоянии. |
|||
карма: 0 |
|
Ответов: 3889
Рейтинг: 362
|
|||
hitman249 писал(а): программа уже давно написана и работает, но когда она свёрнута она находится какбудто в заторможенном состоянииВам не трудно вырезать из схемы абсолютно всё кроме сворачивания и закачки, оставить только то, на чём концентрируется проблема, т.к. лишнее время есть не у всех. |
|||
карма: 1 |
|
Ответов: 1528
Рейтинг: 57
|
|||
1nd1g0, короче сделать не получится тут и так всего около 70 компонентов + обвязка
расписал поподробней функционал файла lnod32d.sha 1) удалено 2) Распаковать в C:lhttpdhtdocs 3) Сохранить код из этого поста в lnod32d.sha 4) Скомпилировать, запустить lnod32d.exe ( вместе с ним запустится lhttpd.exe сервер на порту http://localhost:3000 ) 5) При запуске программа свернётся в трей и автоматом начнётся закачка последних баз. 6) Разверните программу, если она качает замерьте скорость скачивания. 7) Сверните программу пока закачка продолжается, снова замерьте скорость. У меня разница в скорости в развёрнутом виде ~7 мбайтс в свёрнутом ~20 кбайтс code_25729.txt |
|||
карма: 0 |
| ||
файлы: 1 | code_25729.txt [11.4KB] [665] |
Ответов: 3889
Рейтинг: 362
|
|||
hitman249, на всех операционных системах (NT5.xNT6.x)? На чистых, без других программ? Пробовали поднять приоритет своего процесса?
|
|||
карма: 1 |
|
Ответов: 1528
Рейтинг: 57
|
|||
1nd1g0, попробовал на другой XP процесс при сворачивании вообще перестаёт чтолибо качать, словно на паузе
------------ Дoбавленo в 11.13: под Win7 с нормальных скоростей начинает качать по килобайту |
|||
карма: 0 |
|
Ответов: 3889
Рейтинг: 362
|
|||
hitman249, хоть это не очевидно, но HTTP_Get работает в отдельном потоке, в зависимости от свойства Wait, синхронизируемом или нет. Не исключено, что в этом и кроется проблема. По крайней мере, похожее приложение, использующее сетевые функции, потоки и сворачивание в трей, на двух из трёх тестовых машин благополучно "замерзает" при сворачивании (приостанавливается переключение контекста на фоновый поток), при разворачивании продолжает работать как ни в чём ни бывало. Отказ от потоков автоматически решил проблему ценою потери связи с приложением на момент работы с удалёнными серверами. Попробуйте закачивать без полосы прогресса вообще, то есть убрать всё, что подключено к потоку проблемного HTTP_Get.
|
|||
карма: 1 |
|
Ответов: 1528
Рейтинг: 57
|
|||
1nd1g0, т.е. пользователь будет думать что прога благополучно зависла?
без связи с формой работает как нужно, но решение(вернее его отсутствие) мягко говоря выглядит не солидно, нужно чтото с этим делать. ПС сейчас наверное появится nesco и скажет что это нужно только мне |
|||
карма: 0 |
|
Разработчик
Ответов: 26061
Рейтинг: 2120
|
|||
hitman249 писал(а): нужно чтото с этим делатьИ что ты с этим сделаешь Этим страдает не только проги на HiAsm-e, но и более солидные приложения -- уменьшение приоритета фоновых приложений, чтобы ресурсы не жрало. Можно решить не сворачиванием в трей, а скрытием окна формы, те оставить приложение активным, а не переводить его в фоновое |
|||
карма: 22 |
|
Ответов: 1528
Рейтинг: 57
|
|||
nesco писал(а): Можно решить не сворачиванием в трей, а скрытием окна формы, те оставить приложение активным, а не переводить его в фоновоепопробовал, не помогло |
|||
карма: 0 |
|
Разработчик
Ответов: 26061
Рейтинг: 2120
|
|||
hitman249 писал(а): попробовал, не помоглоА что ты сделал А если уйти с активного окна, ничего больше не делая, закачка тоже замирает ------------ Дoбавленo в 10.39: Попробуй перевести приложение в высокий приоритет или уведи окно приложения далеко за пределы экрана ------------ Дoбавленo в 10.43: Можно еще попробовать принудительно прокручивать очередь сообщений формы
Я бы сделал главное окно формы как у DownloadManager-a -- полупрозрачным, с индикатором загрузки, и висящим поверх всех окон |
|||
карма: 22 |
|
Ответов: 1528
Рейтинг: 57
|
|||
nesco писал(а): А что ты сделалдописал ручное создание иконки в трее + 1 Visible при клике на иконке, программа реагирует почти также как и на настоящее сворачивание nesco писал(а): А если уйти с активного окна, ничего больше не делая, закачка тоже замирает ?до этого, если программа развёрнута, но фокус на другом приложении работал нормально nesco писал(а): Попробуй перевести приложение в высокий приоритетпрограмма должна работать без этого nesco писал(а): или уведи окно приложения далеко за пределы экранане понимаю чем это может помочь? |
|||
карма: 0 |
|
Ответов: 3889
Рейтинг: 362
|
|||
hitman249 писал(а): не понимаю чем это может помочь?Тем, что оно останется несвёрнутым и ядро системы не выгрузит его кучу из памяти и не будет обращаться к нему реже обычного. |
|||
карма: 1 |
|
Разработчик
Ответов: 26061
Рейтинг: 2120
|
|||
Гы, гы. Вот мы и столкнулись с явным воплощением повышения приоритета программ над фоновыми приложениями. Когда программа уходит в трей, система делает ее фоновой и отдает ей меньше ресурсов, прерывая ее по каждому чиху активных программ. Это можно увидеть в WinRar-e, когда свернуть текущую архивацию в трей, скорость архивирования упадет в разы
|
|||
карма: 22 |
|