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