ESTE APLICATIVO PAROU DE RESPONDER
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?
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?
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.
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.
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()
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.
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.
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