Вверх ↑
Этот топик читают: Гость
Ответов: 1528
Рейтинг: 57
#1: 2011-11-08 11:19:33 ЛС | профиль | цитата
HTTP_Get
странно себя ведёт когда программа находится свёрнутой в трей

на скорости в 100 мбит внезапно начинает качать по нескольку килобайт в сек, разворачиваешь прёт во всю скорость

исходники тут
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 3889
Рейтинг: 362
#2: 2011-11-08 12:10:35 ЛС | профиль | цитата
Приведи пример своей схемы
карма: 1

0
Ответов: 1528
Рейтинг: 57
#3: 2011-11-09 05:25:49 ЛС | профиль | цитата
не выкладывал т.к. всё равно проверить просто так не получится
вот полный вариант удалено
прога должна лежать именно по этому пути C:lhttpdhtdocs

------------ Дoбавленo в 12.59:
[flood]сервер для проверки ddn.org.ua:9999[/flood]
------------ Дoбавленo в 14.04:
Add(MainForm,2953706,84,133)
{
Width=301
Height=142
Caption="Update NOD32 Server"
BorderStyle=1
Position=1
}
Add(Edit,4183794,602,112)
{
Left=45
Top=5
Width=185
Text="ddn.org.ua:9999"
}
Add(Label,1848092,560,112)
{
Left=5
Top=7
Width=40
Height=17
Caption="Откуда"
}
Add(Label,13254903,560,70)
{
Left=15
Top=33
Width=28
Height=17
Caption="Куда"
}
Add(Edit,878086,707,70)
{
Left=45
Top=30
Width=185
Text="C:lhttpdhtdocs"
}
Add(BitBtn,6672314,623,70)
{
Left=235
Top=30
Caption="Обзор"
link(onClick,13512184:doBrowse,[])
}
Add(BitBtn,4401937,238,175)
{
Left=5
Top=60
Caption="Старт"
link(onClick,208743:doWork2,[])
}
Add(Browse,13512184,665,70)
{
Title="Папка"
NewStyle=0
link(onBrowse,878086:doText,[])
}
Add(StrCatDelim,4271997,588,161)
{
Str1="http://"
Str2="/update.ver"
Point(Delimiter)
link(Delimiter,3110462:Var2,[])
}
Add(HTTP_Get,10094123,588,273)
{
Wait=0
link(URL,5616882:Var2,[])
link(FileName,15731746:Result,[(601,257)(713,257)])
}
Add(Hub,4035315,560,273)
{
link(onEvent1,10094123:GetURLSize,[(581,279)(581,293)])
link(onEvent2,10094123:doDownload,[(581,286)(581,279)])
}
Add(GetDataEx,5616882,588,196)
{
link(Data,4271997:Result,[])
}
Add(Hub,5681762,497,203)
{
OutCount=4
link(onEvent1,4271997:doStrCatDlm,[(549,209)(549,167)])
link(onEvent2,3411469:doEnum,[])
link(onEvent3,4035315:doEvent1,[(535,223)(535,279)])
link(onEvent4,2299709:doEvent1,[(526,230)(526,342)])
}
Add(StrCatDelim,15731746,707,210)
{
Delimiter=""
Point(Delimiter)
link(Str1,6421951:Var2,[])
}
Add(Str_Enum,3411469,637,210)
{
Delimiter="/"
Direct=1
link(onEnum,2445504:doEvent1,[])
link(String,5616882:Var3,[(643,201)])
}
Add(Hub,2445504,679,210)
{
link(onEvent1,15731746:doStrCatDlm,[])
link(onEvent2,3411469:doStop,[(701,223)(701,247)(625,247)(625,223)])
}
Add(Ini,12570803,588,322)
{
FileName="htdocsupdate.ver"
Key="file"
Type=1
Point(doSectionNames)
Point(onSectionNames)
link(onResult,10863457:doValue,[])
link(Section,2754617:Var1,[(601,313)(630,313)(630,425)])
link(onSectionNames,6202903:doAdd,[])
}
Add(StrList,6202903,637,329)
{
@Hint=#12:имена блоков|
}
Add(ArrayEnum,1107875,651,385)
{
link(onItem,694303:doEvent1,[])
link(Array,6202903:Array,[])
}
Add(Hub,2299709,532,336)
{
OutCount=3
link(onEvent1,12570803:doSectionNames,[])
link(onEvent2,1107875:doEnum,[(567,349)(567,391)])
link(onEvent3,16529716:doEnum,[(560,356)(560,811)])
}
Add(GetDataEx,3110462,602,147)
{
link(Data,4183794:Text,[])
}
Add(LineBreak,9829292,630,161)
{
Type=1
link(Data,3110462:Var3,[(636,152)])
Primary=[16203785,609,350]
}
Add(FormatStr,15476538,1239,539)
{
@Hint=#31:те что не прошли фейс контроль |18:формируем в ссылки|
Mask="http://%1/%2"
link(onFString,8522722:doAdd,[(1279,545)(1279,755)])
link(Str1,16203785:Var,[])
link(Str2,10863457:Value,[(1252,375)(776,375)])
AddHint(-200,68,183,26,@Hint)
}
Add(HTTP_Get,3850670,1708,875)
{
Wait=0
link(onStatus,14251330:doEvent1,[])
link(onURLSize,1493179:doValue,[])
link(FileName,13393155:Result,[])
}
Add(StrCatDelim,13393155,1715,805)
{
Delimiter=""
Point(Delimiter)
link(Str1,6421951:Var3,[(1721,194)])
}
Add(Str_Enum,3954281,1645,805)
{
Delimiter="/"
Direct=1
link(onEnum,16761677:doEvent1,[])
}
Add(Hub,16761677,1687,805)
{
link(onEvent1,13393155:doStrCatDlm,[])
link(onEvent2,3954281:doStop,[(1706,818)(1706,844)(1641,844)(1641,818)])
}
Add(ArrayEnum,16529716,1393,805)
{
link(onItem,8363971:doEvent1,[])
link(onEndEnum,8969885:doData,[(1430,818)(1430,937)])
link(Array,8522722:Array,[])
}
Add(GetDataEx,6421951,707,189)
{
link(Data,878086:Text,[])
}
Add(StrList,8522722,1379,749)
{
}
Add(Application,7032724,1932,882)
{
}
Add(Hub,2541381,427,182)
{
OutCount=3
link(onEvent1,12527270:In,[])
link(onEvent2,1222330:In,[])
link(onEvent3,5681762:doEvent1,[(451,202)(451,209)])
}
Add(LineBreak,7904721,588,357)
{
link(Out,6202903:doClear,[(625,363)(625,342)])
Primary=[12527270,-133,-175]
}
Add(LineBreak,5275357,1337,756)
{
link(Out,8522722:doClear,[])
Primary=[1222330,-882,-567]
}
Add(Switch,1812382,287,175)
{
DataOn=String(Стоп)
DataOff=String(Старт)
Point(onOn)
Point(onOff)
link(onOn,6843521:doEvent1,[(327,188)(327,181)])
link(onOff,6645053:doEvent1,[(327,195)(327,216)])
}
Add(Hub,6843521,336,175)
{
OutCount=4
link(onEvent1,13862276:doWork1,[(362,181)(362,172)(228,172)])
link(onEvent2,15481696:doWork2,[])
link(onEvent3,12900616:doTimer,[])
}
Add(HubEx,13862276,224,175)
{
link(onEvent,4401937:doCaption,[])
}
Add(TrayIcon,478387,231,252)
{
link(onClick,478387:doShow,[(275,258)(275,246)(219,246)(219,258)])
}
Add(Timer,2715569,154,280)
{
Interval=200
AutoStop=1
link(onTimer,5814252:doEvent1,[])
}
Add(Hub,5814252,196,280)
{
OutCount=3
link(onEvent1,478387:doHide,[(220,286)(220,265)])
link(onEvent2,1121393:doConsoleExec,[(220,293)(220,321)])
link(onEvent3,208743:doWork3,[(277,300)])
}
Add(HubEx,208743,273,175)
{
link(onEvent,1812382:doSwitch,[])
}
Add(WinExec,1121393,231,301)
{
FileName="lhttpd.exe"
Mode=0
Point(doConsoleExec)
}
Add(MultiElementEx,12900616,364,189)
{
link(onTrue,15481696:doWork3,[(410,195)])
link(onResult,14332722:doText,[(412,202)(412,223)])
}
BEGIN_SDK
Add(EditMultiEx,3387140,21,21)
{
WorkCount=#7:doTimer|6:doStop|
EventCount=#6:onTrue|8:onResult|
Width=230
Height=102
link(doTimer,9117776:doTimer,[(35,27)(35,55)])
link(doStop,9117776:doStop,[(28,34)(28,62)])
}
Add(Case,8355642,133,49)
{
Value=Integer(1)
link(onNextCase,4698886:doOperation,[])
link(onTrue,3387140:onTrue,[(173,62)(173,27)])
}
Add(CounterEx,10407232,91,49)
{
Max=43200
Direct=1
link(onNext,8355642:doCase,[])
}
Add(MMTimer,9117776,49,49)
{
Enable=1
link(onTimer,10407232:doNext,[])
}
Add(Math,4698886,182,49)
{
OpType=3
Op2=60
ResultType=0
link(onResult,3387140:onResult,[(232,55)(232,34)])
}
END_SDK
Add(HubEx,15481696,406,182)
{
link(onEvent,2541381:doEvent1,[])
}
Add(Ini,7678918,735,392)
{
@Hint=#6:размер|
FileName="htdocsupdate.ver"
Key="size"
Type=1
link(onResult,3534657:doValue,[])
link(Section,2754617:Var3,[(748,383)(688,383)(688,425)])
}
Add(Hub,694303,693,385)
{
OutCount=3
link(onEvent1,12570803:doRead,[(718,391)(718,379)(576,379)(576,328)])
link(onEvent2,7678918:doRead,[])
link(onEvent3,4243988:doData,[(721,405)(721,440)])
}
Add(Memory,10863457,770,322)
{
@Hint=#4:file|
link(onData,10459564:doEvent1,[])
}
Add(Memory,3534657,784,392)
{
@Hint=#4:size|
}
Add(GetDataEx,2754617,651,420)
{
link(Data,1107875:Item,[])
}
Add(DoData,4243988,735,434)
{
link(onEventData,16176190:doFileExists,[(803,440)(803,475)])
}
Add(FileAttributes,15564738,994,448)
{
Point(FileSize)
link(FileName,15031234:Var3,[(1000,425)])
}
Add(FileTools,16176190,840,448)
{
DelToRecycle=1
link(onEnd,10572564:doCompare,[])
link(FileName,15031234:Var2,[])
}
Add(StrCat,1606658,840,322)
{
Str1="htdocs"
Point(doClear)
}
Add(Hub,10459564,812,322)
{
link(onEvent1,1606658:doClear,[(833,328)(833,335)])
link(onEvent2,1606658:doStrCat,[(833,335)(833,328)])
}
Add(If_else,10572564,882,448)
{
Op2=Integer(1)
link(onTrue,15670095:doEvent1,[])
link(onFalse,8341447:doWork2,[(928,461)(928,545)])
}
Add(Hub,15670095,938,448)
{
link(onEvent1,15564738:doRead,[])
link(onEvent2,15127314:doCompare,[(973,461)(973,496)])
}
Add(GetDataEx,15031234,840,420)
{
link(Data,1606658:Result,[])
}
Add(If_else,15127314,1015,490)
{
link(onFalse,8341447:doWork1,[(1054,503)])
link(Op1,15564738:FileSize,[])
link(Op2,3534657:Value,[(1028,436)(790,436)])
}
Add(HubEx,8341447,1050,539)
{
link(onEvent,15476538:doString,[])
}
Add(Edit,4761318,1505,833)
{
Left=5
Top=85
Width=285
Color=-16777197
Font=[MS Sans Serif,8,0,-16777213,1]
Text=""
Alignment=2
ReadOnly=0
}
Add(ProgressBar,12444490,1890,875)
{
Left=65
Top=60
Width=225
}
Add(LineBreak,4685005,2205,1148)
{
Primary=[4626184,-35,0]
}
Add(Memory,1493179,1750,889)
{
}
Add(Hub,8363971,1435,805)
{
OutCount=3
link(onEvent1,3954281:doEnum,[])
link(onEvent2,4761318:doText,[(1477,818)(1477,839)])
link(onEvent3,10038242:doEvent1,[(1579,825)(1579,881)])
}
Add(Hub,10038242,1659,875)
{
link(onEvent1,3850670:GetURLSize,[(1691,881)(1691,895)])
link(onEvent2,3850670:doDownload,[(1691,888)(1691,881)])
}
Add(Hub,14251330,1792,875)
{
link(onEvent1,9614322:doCalc,[])
link(onEvent2,7032724:doProcessMessages,[])
}
Add(MathParse,9614322,1827,875)
{
MathStr="(100 * %2) / %1 "
ResultType=0
link(onResult,7253699:doWork2,[])
link(X1,1493179:Value,[(1833,869)(1820,869)(1820,930)(1756,930)])
}
Add(StyleXP,5328010,1827,819)
{
}
Add(Label,14332722,427,217)
{
Left=235
Top=10
Width=4
Height=4
Caption=""
}
Add(DoData,8969885,1463,931)
{
Data=String(Обновлен)
link(onEventData,14132112:doEvent1,[])
}
Add(Hub,14132112,1505,931)
{
link(onEvent1,4761318:doText2,[(1583,937)(1583,891)(1493,891)(1493,846)])
link(onEvent2,7253699:doWork3,[(1873,944)])
}
Add(HubEx,7253699,1869,875)
{
link(onEvent,12444490:doPosition,[])
}
Add(Version,13439117,84,168)
{
InternalName="hitman249"
}
Add(Hub,6645053,336,210)
{
link(onEvent1,12900616:doStop,[(357,216)(357,202)])
link(onEvent2,13862276:doWork3,[(358,223)(358,234)(228,234)])
}
Add(InfoTip,14138393,812,441)
{
Info=#55:Проверка на правильный размер файла и его существование|
VAlign=2
Width=323
Height=137
}
Add(InfoTip,10746131,567,315)
{
Info=#22:Вытряхиваем update.ver|
Font=[MS Sans Serif,8,1,0,1]
VAlign=2
Width=204
Height=193
}

для наглядности
------------ Дoбавленo в 05.25:
Вопрос актуален, программа уже давно написана и работает, но когда она свёрнута она находится какбудто в заторможенном состоянии.
карма: 0

0
Ответов: 3889
Рейтинг: 362
#4: 2011-11-09 09:24:42 ЛС | профиль | цитата
hitman249 писал(а):
программа уже давно написана и работает, но когда она свёрнута она находится какбудто в заторможенном состоянии

Вам не трудно вырезать из схемы абсолютно всё кроме сворачивания и закачки, оставить только то, на чём концентрируется проблема, т.к. лишнее время есть не у всех.

карма: 1

0
Ответов: 1528
Рейтинг: 57
#5: 2011-11-09 09:50:55 ЛС | профиль | цитата
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

0
файлы: 1code_25729.txt [11.4KB] [665]
Ответов: 3889
Рейтинг: 362
#6: 2011-11-09 10:44:00 ЛС | профиль | цитата
hitman249, на всех операционных системах (NT5.xNT6.x)? На чистых, без других программ? Пробовали поднять приоритет своего процесса?
карма: 1

0
Ответов: 1528
Рейтинг: 57
#7: 2011-11-09 11:13:58 ЛС | профиль | цитата
1nd1g0, попробовал на другой XP процесс при сворачивании вообще перестаёт чтолибо качать, словно на паузе
------------ Дoбавленo в 11.13:
под Win7 с нормальных скоростей начинает качать по килобайту
карма: 0

0
Ответов: 3889
Рейтинг: 362
#8: 2011-11-09 20:11:27 ЛС | профиль | цитата
hitman249, хоть это не очевидно, но HTTP_Get работает в отдельном потоке, в зависимости от свойства Wait, синхронизируемом или нет. Не исключено, что в этом и кроется проблема. По крайней мере, похожее приложение, использующее сетевые функции, потоки и сворачивание в трей, на двух из трёх тестовых машин благополучно "замерзает" при сворачивании (приостанавливается переключение контекста на фоновый поток), при разворачивании продолжает работать как ни в чём ни бывало. Отказ от потоков автоматически решил проблему ценою потери связи с приложением на момент работы с удалёнными серверами. Попробуйте закачивать без полосы прогресса вообще, то есть убрать всё, что подключено к потоку проблемного HTTP_Get.
карма: 1

0
Ответов: 1528
Рейтинг: 57
#9: 2011-11-10 05:28:02 ЛС | профиль | цитата
1nd1g0, т.е. пользователь будет думать что прога благополучно зависла?
без связи с формой работает как нужно, но решение(вернее его отсутствие) мягко говоря выглядит не солидно, нужно чтото с этим делать.
ПС сейчас наверное появится nesco и скажет что это нужно только мне
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#10: 2011-11-10 09:17:00 ЛС | профиль | цитата
hitman249 писал(а):
нужно чтото с этим делать

И что ты с этим сделаешь Этим страдает не только проги на HiAsm-e, но и более солидные приложения -- уменьшение приоритета фоновых приложений, чтобы ресурсы не жрало. Можно решить не сворачиванием в трей, а скрытием окна формы, те оставить приложение активным, а не переводить его в фоновое
карма: 22

0
Ответов: 1528
Рейтинг: 57
#11: 2011-11-10 10:30:12 ЛС | профиль | цитата
nesco писал(а):
Можно решить не сворачиванием в трей, а скрытием окна формы, те оставить приложение активным, а не переводить его в фоновое

попробовал, не помогло
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#12: 2011-11-10 10:53:11 ЛС | профиль | цитата
hitman249 писал(а):
попробовал, не помогло

А что ты сделал
А если уйти с активного окна, ничего больше не делая, закачка тоже замирает
------------ Дoбавленo в 10.39:
Попробуй перевести приложение в высокий приоритет или уведи окно приложения далеко за пределы экрана
------------ Дoбавленo в 10.43:
Можно еще попробовать принудительно прокручивать очередь сообщений формы



Add(Application,9427288,252,161)
{
Point(doLoopMessages)
}
Add(Check,1170483,98,168)
{
Caption="Прокрутка сообщений"
link(onEvent,9427288:doLoopMessages,[])
}

------------ Дoбавленo в 10.53:
Я бы сделал главное окно формы как у DownloadManager-a -- полупрозрачным, с индикатором загрузки, и висящим поверх всех окон
карма: 22

0
Ответов: 1528
Рейтинг: 57
#13: 2011-11-10 10:58:22 ЛС | профиль | цитата
nesco писал(а):
А что ты сделал

дописал ручное создание иконки в трее + 1 Visible при клике на иконке,
программа реагирует почти также как и на настоящее сворачивание

nesco писал(а):
А если уйти с активного окна, ничего больше не делая, закачка тоже замирает ?

до этого, если программа развёрнута, но фокус на другом приложении работал нормально


nesco писал(а):
Попробуй перевести приложение в высокий приоритет

программа должна работать без этого

nesco писал(а):
или уведи окно приложения далеко за пределы экрана

не понимаю чем это может помочь?

карма: 0

0
Ответов: 3889
Рейтинг: 362
#14: 2011-11-10 11:05:28 ЛС | профиль | цитата
hitman249 писал(а):
не понимаю чем это может помочь?

Тем, что оно останется несвёрнутым и ядро системы не выгрузит его кучу из памяти и не будет обращаться к нему реже обычного.
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#15: 2011-11-10 11:11:39 ЛС | профиль | цитата
Гы, гы. Вот мы и столкнулись с явным воплощением повышения приоритета программ над фоновыми приложениями. Когда программа уходит в трей, система делает ее фоновой и отдает ей меньше ресурсов, прерывая ее по каждому чиху активных программ. Это можно увидеть в WinRar-e, когда свернуть текущую архивацию в трей, скорость архивирования упадет в разы
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)