image

Olá pessoal, meu nome é Mauricio Junior e hoje eu vou falar algo que fiz para executar algo em uma nova thread e assim deixar a página ou o programa desktop funcionando/navegável para o usuário enquanto o software continua processando os dados.

Problema

O problema que eu tinha era que, se o usuário clicasse em buscar e depois clicasse me exportar os dados para CSV ou Excel, era necessário ficar esperando que os dados fossem buscados no banco de dados novamente e depois convertidos para o CSV.

Solução

Criar apenas um método com um parâmetro (bool isExport = false) e o botão de exportar passa o parâmetro isExport = true e a busca não passa nada porque o padrão já é false. Para exportar dados, não precisa buscar os dados no database mais porque já está na tela, dessa forma faço que a execução execute em outra thread enquanto o usuário continua navegando e vendo a lista preenchida.

using System.Threading;

new Thread(() => 
{
    Thread.CurrentThread.IsBackground = true; 

	ExportToCSV();
    
})
.Start();

Código 1.1 - Colocando thread para chamar método

Note que o código possui a propriedade IsBackground = true e o .Start() para que tudo seja processado fora da mesma thread do sistema e assim o usuário consegue navegar no sistema enquanto os dados estão sendo exportados.

É lógico que o método pede para o usuário escolher o local que o arquivo será gravado e assim quando terminar, o arquivo estará atualizado. No meu caso, o arquivo possui mais de 20 MB de texto, que é muito.

Fica a dica para quem quer fazer que o seu sistema execute algo em outra thread para depois se mostrado. Espero que tenha gostado e qualquer dĂşvida pode entrar em contato comigo pelos sites plataforma.academy e mauriciojunior.net