Página 1 de 1

"Programa não está respondendo" após o execute

Enviado: 07 Fev 2020 09:28
por asimoes
Dependendo da consulta com muitos registros, pode acontecer a mensagem "Programa não está respondendo"
Então podemos apelar para a execução em Thread ?, fiz o teste aqui e funcionou.

Gravei o tempo para saber o tempo de execução

Código: Selecionar todos

nSeconds := Seconds()

nThread  :=  Hb_ThreadStart( Hb_BitOr( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS ), {|| ::Execute(@oRecordSet, oCommand) } )
         
DO WHILE .T.
   IF Hb_ThreadWait( nThread, 0.1, .T. ) == 1 
      Hb_MemoWrit( "EXECUTE.TXT", SecToTime( Seconds() - nSeconds ) )
      Exit
   ENDIF
   hwg_DoEvents()
ENDDO
         
METHOD Execute( oRS, oCommand )

   oRS := oCommand:Execute()
   
RETURN oRS