Edson Alamino G. Júnior

[RESOLVIDO ] Como deixar processo rodando em background

9 posts in this topic

Bom dia caros !
Não sei se fui feliz no título do tópico, mas explico sobre o que preciso:

Ao abrir minha aplicação, gostaria que houvesse um processo, thread (não sei bem qual termo/conceito utilizar) no qual de tempos em tempos fosse disparada uma consulta ao servidor WS para ir atualizando algumas tabelas.

Tudo isso claro, por detrás das cortinas, enquanto outras funções estão sendo executadas.

Uma vez vi uma postagem, se não me engano do @Wagner Honorio que tratava disso ou coisa parecida, mas não encontro mais.

Share this post


Link to post
Share on other sites

Cria a procedure e depois clica no botao indicado, conforme a imagem.

Depois define o tempo na janela que vai abrir

t1.png

t2.png

1 person likes this

Share this post


Link to post
Share on other sites

Chic !
Funcionando !
No meu caso essa thread faz acesso via WS, pega (no servidor) alguns registros em duas tabelas e salva no dispositivo.

Agora preciso fazer uma espécie de refresh no looper do dispositivo para pegar estas atualizações.

Share this post


Link to post
Share on other sites

Bom, se a procedure vai ficar rodando la de tempos em tempos e vc precisa dar um refresh num looper, tenha em mente que esse looper está numa window (janela).

A pergunta eh: essa window estará sempre aberta para que no momento que a procedure rodar vc poder dar o refresh no looper?

Imagino que ao final da propria procedure vc pode fazer essa verificação e dar o refresh no looper, caso necessário.

1. Verifica se a janela está aberta.

2. Está? entao da o refresh no lopper.

LooperDisplay(NomeWindow.NomeLooper)

https://help.windev.com/?3038030

Share this post


Link to post
Share on other sites

Perfeito @Janio Aguiar !
Obrigado !

Observações:

Se não estiver com a Win do Looper aberta, tudo ocorre perfeitamente. A thread é executada, alimenta as minhas duas tabelinhas e show ! Depois quando eu abrir a Win com o Looper, tudo estará lá. Perfeito !

 

Agora ... como você mencionou, se a Win estiver aberta e exibindo o Looper, a thread é executada, porém as funções WinStatus(), LooperDisplay() ou qualquer tentativa de alterar algum controle nesta Win, não funciona !
Seguem as imagens com as exclamações.

 

Na verdade, até poderia deixar a thread funcionar apenas se a janela não estiver sendo exibida. Os usuários não irão ficar muito tempo nesta janela,mas ...

 

Na luta aqui ...

 

LooperDisplay.png

PegarRegistro.png

WinStatus.png

Share this post


Link to post
Share on other sites

Hummmm

Pelas msg que ele deu, o danado ta nos dizendo que essa abordagem que estamos fazendo nao é a recomendável. O bicho eh sabido mesmo hehehe

Nesse caso eu partiria pra algo do tipo:

1- Deixa a thread rodando perfeito e fazendo o que tem que fazer como ja está

2- Quando vc estiver com a bendita window aberta, vc colocaria um timer executando uma função que vc deseja. Nesse timer vc chama uma função e nela faz o processo e dar ou não o refresh no looper, a depender as condições que vc estabelecer

É uma ideia...

No exemplo da imagem:

1 - Paro o time

2 - Executo a função

3 - Ligo o timer de novo com o tempo que estabeleci (no caso eh 120segundos)

4 - A cada 120 segundos essa função eh executada

Num sistema desktop ta funcionando perfeito. Pra mobile ja nao sei...

 

WhatsApp Image 2020-03-26 at 16.57.32.jpeg

Share this post


Link to post
Share on other sites
4 horas atrás, Janio Aguiar disse:

Hummmm

Pelas msg que ele deu, o danado ta nos dizendo que essa abordagem que estamos fazendo nao é a recomendável. O bicho eh sabido mesmo hehehe

Nesse caso eu partiria pra algo do tipo:

1- Deixa a thread rodando perfeito e fazendo o que tem que fazer como ja está

2- Quando vc estiver com a bendita window aberta, vc colocaria um timer executando uma função que vc deseja. Nesse timer vc chama uma função e nela faz o processo e dar ou não o refresh no looper, a depender as condições que vc estabelecer

É uma ideia...

No exemplo da imagem:

1 - Paro o time

2 - Executo a função

3 - Ligo o timer de novo com o tempo que estabeleci (no caso eh 120segundos)

4 - A cada 120 segundos essa função eh executada

Num sistema desktop ta funcionando perfeito. Pra mobile ja nao sei...

 

WhatsApp Image 2020-03-26 at 16.57.32.jpeg

Agora matou a pau !
Essa função TimerSys() eu ainda não conhecia.

 

Valeu Janius

1 person likes this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now