sexta-feira, 26 de fevereiro de 2010

Trabalhando com Threads no Asp.net

Fala, galera!!

Hoje escreverei sobre o uso de Threads no .net.
A grosso modo, uma thread nada mais é do que uma linha de execução de um processo.

Esta semana me deparei com a seguinte situação:
Uma aplicação windows que realiza uma carga grande de dados para uma base SQL Server.
Durante a carga, a janela do aplicativo ficava congelada e no título da janela aparecia o seguinte texto: "Não Respondendo".

A carga continuava sendo feita, mas o usuário tinha a sensação de que o programa tinha travado.
Para acabar com essa sensação era necessário dar um feedback para o usuário sobre o andamento da carga.
Mas nada funcionava, pois a janela ficava congelada.

A solução foi trabalhar com Threads.
Sendo assim, alterei o código para que executasse o método de carga em uma nova Thread.
Enquanto a Thread "principal" apenas monitorava a carga, incrementando um contador e manipulando uma barra de progresso.

Segue o código para a criação da nova Thread:


Dim Thread As New System.Threading.Thread(AddressOf ProcessarCarga)
Thread.Start()

O parâmetro AddressOf recebe o nome do método que será executado na nova Thread.

Desta forma todo o processamento da carga foi executado em "background".
Isto é, em uma thread separada da thread principal que deu origem ao aplicativo.
Isso impediu o congelamento da janela, fazendo com que o feedback para o usuário fosse viável.

Para o feedback, inseri um Timer que monitorava a carga a cada 1 segundo, obtinha o total de registros inseridos para incrementar o contador e ajustava a barra de progresso.

É isso ae!! Um abraço e até a próxima!!

Nenhum comentário:

Postar um comentário