Pessoal,
Tenho uma janela que queria usar Hb_IdleAdd() e não funciona, alguém sabe o porque ?
Att.

Moderador: Moderadores
Claudio Soto escreveu:La diferencia entre un Timer y un idle, es que el primero se ejecuta a un intervalo determinado siempre y cuando el SO no este ejecutando otra tarea, los timers son de baja prioridad para Windows, y el idle se ejecuta cuando el SO esta ocioso, es decir cuando el lazo de mensajes de Windows no esta recibiendo ni procesando ningún mensaje, se utilizan tÃpicamente para hacer tareas en background para tratar de interferir lo menos posible con la ejecucion de la aplicación, esto se utiliza mucho en aplicaciones que requieren mucha velocidad como por ej el desarrollo de juegos y animaciones gráficas
asimoes escreveu:Leonardo,
Eu poderia utilizar o SET TIMER, o que não estou entendendo é o Hb_IdleAdd não funcionar em uma janela HwGui, em uma janela GTXXX funciona.
Eu tenho um sistema que estou migrando aos poucos, a coisa se inverteu, antes era GTWVT agora é HwGui e ainda tem algumas telas GTWVT, no meu programa prinicipal (FUNCTION MAIN) legado da janela GTWVT uso Hb_IdelAdd e estava achando que tava funcionando e não está. Esse idle verifica de tempos em tempos se a conexão de rede está ativa entre outras coisas.
METHOD Liga_Timer( oJanela, lLiga, nTime, bBlock, oTimer )
IF lLiga
SET TIMER &oTimer of oJanela VALUE nTime * 1000 ACTION bBlock
ELSE
oJanela:&oTimer:End()
ENDIF
RETURN Nil
asimoes escreveu:Eu poderia utilizar o SET TIMER, o que não estou entendendo é o Hb_IdleAdd não funcionar em uma janela HwGui, em uma janela GTXXX funciona.
METHOD CheckLiveNet( oWin )
LOCAL hEstacaoCobranca, cEstacaoCobranca
::Liga_Timer( oWin, .F.,,,"oTimer" )
IF nTempoUltimaVerificacaoSistema = Nil
nTempoUltimaVerificacaoSistema := Seconds()
ENDIF
IF Seconds() - nTempoUltimaVerificacaoSistema >= ::nTmpSistema
nThread := Hb_ThreadStart( Hb_BITOR( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS ), {|| ::NetWork() } )
::WaitThread( nThread )
nTempoUltimaVerificacaoSistema := Seconds()
ENDIF
hwg_WriteStatus( ThisFormMain, 1, Time() )
hwg_ProcessMessage()
::Liga_Timer( oWin, .T., ::nTmpSistema, { || ::CheckLiveNet( oWin ) }, "oTimer" )
RETURN Nil
METHOD WaitThread( nThread )
DO WHILE .T.
IF hb_ThreadWait( nThread, 0.1, .T. ) == 1
EXIT
ENDIF
hwg_ProcessMessage()
ENDDO
RETURN Nil
Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes