Tenho uma aplicação desktop que faz um loop para carregar dados do banco. O problema é que enquanto o loop está sendo feito, as janelas da aplicação ficam idle, como se não estivessem respondendo, parecendo que deu um problema no programa. Alguém sabe como resolver isso? Valeu!!

Aplicação Desktop
Started By edmoks, 11/12/2008, 09:32
2 replies to this topic
#1
Posted 11/12/2008, 09:32
#2
Posted 07/08/2009, 17:10
Se este carregamento ocorre depois que o formulario principal é exibido, você pode utilizar um backgroundworker.
Vá até a paleta de ferramentas (geralmente à esquerda) e abra a categoria "Components".
Selecione o componente BackgroundWorker e coloque no formulario.
De dois cliques nele e implemente o seu código.
Depois, você deve criar um ativador para o backgroundworker.
Pode ser um botão. Crie um botao e clique duas vezes nele. Coloque o seguinte código: backgroundWorker1.RunWorkerAsync();
IMPORTANTE: Se você tentar atualizar algum componente do formulario de dentro do background worker (atualizar uma progressbar por exemplo), será gerada uma exceão. Para este tipo de tarefa, o backgroundworker deve estar associado a um delegate. Procure por isso no MSDN, site oficial da microsoft...
Espero ter ajudado...
Abraço...
PS: Uma vez iniciado o backgroundworker, ele não poderá ser interrompido até concluir a tarefa. A não ser que você o faça manualmente utilizando algumas variáveis de controle. Se quiser um exemplo, poste aqui no fórum que eu te mando um exemplo por email.
Vá até a paleta de ferramentas (geralmente à esquerda) e abra a categoria "Components".
Selecione o componente BackgroundWorker e coloque no formulario.
De dois cliques nele e implemente o seu código.
Depois, você deve criar um ativador para o backgroundworker.
Pode ser um botão. Crie um botao e clique duas vezes nele. Coloque o seguinte código: backgroundWorker1.RunWorkerAsync();
IMPORTANTE: Se você tentar atualizar algum componente do formulario de dentro do background worker (atualizar uma progressbar por exemplo), será gerada uma exceão. Para este tipo de tarefa, o backgroundworker deve estar associado a um delegate. Procure por isso no MSDN, site oficial da microsoft...

Espero ter ajudado...
Abraço...
PS: Uma vez iniciado o backgroundworker, ele não poderá ser interrompido até concluir a tarefa. A não ser que você o faça manualmente utilizando algumas variáveis de controle. Se quiser um exemplo, poste aqui no fórum que eu te mando um exemplo por email.
#3
Posted 10/08/2009, 19:48
Você está fechando essa conexão após o término do loop?
Ocorre alguma exceção durante a busca desses dados?
Ocorre alguma exceção durante a busca desses dados?
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)