Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Alfonso CV

Bloquear programa.

Mensagens Recomendadas

Alfonso CV

Olá pessoal.

Uso Lazarus 1.8.4

Tenho uma aplicação que lê dados remotos, imagem e documentos gravados numa base de dados, o assunto é que quando são grandes e demoram um pouco a gente acha que o sistema está bloqueado, já coloquei barra de progresso e GIF dinâmico mas quando começa a fazer download estes controles param e o programa não responde. Também, se são varias imagens pequenas de 200 KB por exemplo depois de iniciar até não concluir o processo de download a aplicação não responde.

Já usei DELAY e SLEEP para refrescar o Form entre download e nada, a aplicação entra num estado de Stand-by e até não terminar não responde.

Alguma dica???

Cumprimentos,

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nunopicado

O problema é que estás a fazer o download na thread principal, onde também corre o UI do programa. 

Em termos simplistas, numa mesma thread, o CPU do computador pode correr apenas uma instrução de cada vez... 

Tu estás a tentar fazer as instruções do download e as instruções da actualização do UI em simultâneo, pelo que uma delas acaba por ficar para trás. 

Por causa disto, quando há processos demorados, estes devem ser corridos numa segunda thread, deixando a principal encarregue de actualizar o UI. 

Assim já funcionará correctamente. 


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Alfonso CV

Olá Nuno.

Consegui resolver o problema colocando no código o seguinte:

Application.ProcessMessages;

Cumprimentos.

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Alfonso CV

Olá Nuno.

Como já tenha dito, de momento resolvi mas acho que vamos a ter em conta teu comentário pois se facilita a execução do programa e contribui a ser um bocadinho mais rápido alem das possíveis consequências quando se produz alguns erro vale a pesa dar uma olhada neste tema. 

Cumprimentos.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.