ESTE APLICATIVO PAROU DE RESPONDER

MFLAVIO 24/04/2017 08:40:34
#473505
Ola Pessoal Bom dia

Preciso de uma Ajuda, tenho um app que executa rotinas via um Loop
o que acontece e que quando esse loop fica muito grande acima de 5 mil por exemplo, o windows diz que o App parou de responde.
mais na verdade o APP ainda esta executando as rotinas

como eu faço, para não aparecer essa mensagem que o Aplicativo parou de responder?
OCELOT 24/04/2017 09:58:37
#473506
Resposta escolhida
Se esta sua rotina não interage de forma alguma com a sua tela, ou seja, não altera nenhum controle, você pode usar um BackgroundWorker para fazer ela rodar em uma Thread em segundo plano.

Porém essa nem sempre é a melhor alternativa, pode ser que no seu caso uma simples chamada do [Ô]Application.DoEvents()[Ô] dentro do seu loop resolva o problema, assumindo que é um programa feito em Windows Forms.
MFLAVIO 24/04/2017 10:09:37
#473507
Citação:

:
Se esta sua rotina não interage de forma alguma com a sua tela, ou seja, não altera nenhum controle, você pode usar um BackgroundWorker para fazer ela rodar em uma Thread em segundo plano.

Porém essa nem sempre é a melhor alternativa, pode ser que no seu caso uma simples chamada do [Ô]Application.DoEvents()[Ô] dentro do seu loop resolva o problema, assumindo que é um programa feito em Windows Forms.



Sim e um WindowsForm
a única coisa que muda no Forme e um Label que informa quantas rotinas foram executadas
esse label e atualizado dentro do Laço.

como faço para implementar o Application.DoEvents()
OCELOT 24/04/2017 11:27:42
#473509
Simplesmente coloque ele dentro do seu loop, pode ser em qualquer lugar, geralmente se coloca no começo ou final do loop, onde ficar mais fácil.

While ..... [ô]ou outro loop qualquer, Do, For, etc
[ô]seu código

Application.DoEvents()
End While


Algo do tipo, essa chamada vai deixar o sistema processar a fila de mensagens do Windows, quando esta fila não é processada o Windows detecta e dá a mensagem de que o programa não está respondendo. O detalhe aqui é que o programa não vai travar, ele vai permitir que o usuário use o form durante o processo, então pode ser que você tenha que desativar ou bloquear alguns controles.
Tópico encerrado , respostas não são mais permitidas