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
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