Tenho uma rotina para baixar arquivos de um banco de dados remoto. Esta rotina é temporizada. A cada 5 minutos faz uma verificação se há ou não arquivos para baixar.
No modo xHarbour puro funciona perfeitamente, mas na MIniGui apresenta comportamento anormal.
Vejam a parte do código em questão:
WHILE .T.
...
...
...
n_Tempo := 300 && 5 minutos de intervalo.
*
Principal.label_2.FontColor := BLUE
*
n_Seconds := TimeToSec() + n_Tempo
*
l_Exit := .F.
*
WHILE TimeToSec() < n_Seconds
*
n_Sec := TimeToSec()
n_Min := Int( ( n_Seconds - n_Sec ) / 60 )
n_seg := ( n_Seconds - n_Sec ) - n_Min * 60
c_Tempo := Alltrim( Str( n_Min ) ) + ":" + strzero( n_Seg, 02 )
*
Principal.label_2.Value := 'Pr¢xima leitura em ' + c_Tempo + ' minutos.'
*
Inkey( 0.5 )
IF Lastkey() = 13
l_Exit := .T.
EXIT
ELSEIF LASTKEY() = 27
l_Exit := .T.
EXIT
ENDIF
*
ENDDO
*
Principal.label_2.Value := '=== Download em andamento ==='
*
IF l_Exit .AND. LastKey() = 27
EXIT
ENDIF
*
ENDDO
*
IF l_Exit
RETURN( NIL )
ENDIF
Quando o processamento do download do arquivo termina entra no modo de espera pelo loop acima, informando a cada segundo quanto ainda falta para o download seguinte, ou pressionando <ENTER> inicia outro download imediatamente, independente do tempo já decorrido, ou ainda <ESC>. para encerrar o processamento.
Na MiniGui, quando se clica em qualquer área ou pressiona qualquer tecla temos:
1)-o contador de tempo pára de registrar o tempo decorrido, apesar de continuar a contar;
2)-por vezes apresenta a informação que o processamento "não está respondendo";
3)-o processamento continua funcionar normalmente;
4)-todos os label's que informam o andamento das operações, informações do arquivo em download e outros, param de funcionar.
Certamente há uma forma correta de fazer este trabalho na MIniGui.
Como devo fazer isto ?