VB .NET - Fazendo o download de arquivos
Como realizar operações de processamento de dados em segundo plano(de modo assíncrono) e manter a sua interface com o usuário ativa e respondendo a interações dos usuários ?
Utilize a classe BackgroundWorker para gerenciar as interações entre o processo principal e thread ativa.
Qual a vantagem de usar este controle se posso eu mesmo fazer o serviço através de threads ? A vantagem é que o componente já oferece eventos que interagem com outras threads, eventos que você teria que criar via código.
Como exemplo temos o evento DoWork que
é disparado quando é iniciado o trabalho que este terá
que fazer e o evento RunWorkerCompleted que é
acionado quando o processo assíncrono, que está sendo
executado, for terminado.
Veja na tabela abaixo alguns dos
eventos deste controle e sua descrição:
Evento | Descrição |
DoWork | Ocorre quando RunWorkAsync é chamado. Este evento inicia o processamento assíncrono. |
ProgressChanged | Ocorre quando ReportProgress é chamado.Utilizado fazer uma notificação de progressão do processamento. |
RunWorkerCompleted | Ocorre quando a operação assíncrona é encerrada, ou quando uma exceção é disparada. |
Este artigo apresenta um programa que usa este recurso e mostra o resultado do download de arquivos em uma barra de progresso sendo que o arquivo pode ser salvo em um local escolhido pelo usuário.
Abaixo vemos a interface visual do programa em uma aplicação Windows Forms.
Pegue o projeto completo aqui: DownloadArquivos.zip
Eu sei é apenas VB .NET mas eu gosto...
Simples, simples assim...
Referências: