Автор | Сообщение |
|
| |
Пост N: 3831
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.02.14 16:38. Заголовок: Idle
Функция прописанная в hb_idleAdd разве не должна работать фоново и не влиять на основной процесс. Пример таков nvesH := hb_idleAdd( {||Vescreen() } ) тут мой бровс hb_idleDel(nvesH) Func Vescreen() ** тут я снимаю вес с электронных весов и вывожу его на экран. * снятие веса может занимать до 1 секунды и именно эту задержку *чувствую когда хожу по бровсу hb_DispOutAt(3,60,MVesi(aversun[1],aversun[2],aversun[3],.f.),"gr+/b") return nil что не так делаю ?
|
|
|
Ответов - 4
[только новые]
|
|
|
| |
Пост N: 211
Зарегистрирован: 17.06.10
|
|
Отправлено: 13.02.14 17:24. Заголовок: Попробуй так di..
Попробуй так dim[1]:=HB_IdleAdd( {|| HB_BackGroundRun() } ) dim[2]:=HB_BackGroundAdd( {|| МояФункция() }, 100, .T.) броузер HB_BackGroundDel( dim[2] ) HB_IdleDel( dim[1] )
|
|
|
|
| |
Пост N: 3832
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.02.14 18:01. Заголовок: fil пишет: dim:=HB..
fil пишет: цитата: | dim[1]:=HB_IdleAdd( {|| HB_BackGroundRun() } ) dim[2]:=HB_BackGroundAdd( {|| МояФункция() }, 100, .T.) |
| Не много не так нужно Вот так dim[2]:=HB_BackGroundAdd( {|| МояФункция() }, 100, .T.) dim[1]:=HB_IdleAdd( {|| HB_BackGroundRun(dim[2]) } ) Тормоза по прежнему в бровсе Попробую с потоками !
|
|
|
|
| |
Пост N: 207
Зарегистрирован: 16.12.08
|
|
Отправлено: 13.02.14 18:15. Заголовок: пример с xHarbour, р..
пример с xHarbour, работает в Harbour цитата: | PROCEDURE Main LOCAL nCounter := 10 CLS //DispOutAtSetPos( .F. ) nTask := HB_IdleAdd( {|| DispMsg( --nCounter ) } ) ? "Test program for idle state" ? ? InKey( 10 ) HB_IdleDel( nTask ) ? ? "Program resumes" RETURN PROCEDURE DispMsg( nCounter ) LOCAL cMsg cMsg := "Program resumes in " cMsg += Ltrim( Str(nCounter) ) cMsg += " seconds unless you press a key" //DispoutAt( Row(), Col(), cMsg ) ? cMsg Hb_IdleSleep( 1 ) RETURN |
|
|
|
|
|
| |
Пост N: 3833
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.02.14 18:53. Заголовок: santy Чуть модифици..
santy Чуть модифицировал твой пример PROCEDURE Main LOCAL nCounter := 10 CLS //DispOutAtSetPos( .F. ) nTask := HB_IdleAdd( {|| DispMsg( --nCounter ) } ) use TEST new browse(1,0,24,79) HB_IdleDel( nTask ) ? ? "Program resumes" RETURN PROCEDURE DispMsg( nCounter ) LOCAL cMsg cMsg := "Program resumes in " cMsg += Ltrim( Str(nCounter) ) cMsg += " seconds unless you press a key" HB_DispoutAt( 0, 0, cMsg ) Hb_IdleSleep( 1 ) RETURN Попробуй походить по браузеру ;) Переделал на потоки , тормозов нет !
|
|
|
|