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

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

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

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder