executando_thread_em_background

  • Voc√™ quer fazer o seu sistema executar algo sem atrapalhar o usu√°rio?
  • Voc√™ quer deixar o seu sistema sem travar a tela enquanto exporta algo para o usu√°rio?
  • Voc√™ quer deixar o sistema naveg√°vel enquanto o sistema processa algo?

Ent√£o esse artigo √© para voc√™ ler, aprender e praticar como deixar algumas execu√ß√Ķes em background sem travar a sua aplica√ß√£o.

A sua aplica√ß√£o funciona normalmente em uma thread e voc√™ pode fazer que determinadas execu√ß√Ķes possam ser executadas em uma nova thread sem atrapalhar a navega√ß√£o do usu√°rio ou ter que fazer o usu√°rio esperar at√© finalizar a execu√ß√£o.

Em muitos casos, √© importante ter isso dentro do sistema para que ele funcione de forma mais din√Ęmica. No meu caso, eu preciso exportar dados para um arquivo CSV depois que o usu√°rio clicar no bot√£o de exportar. Ao mesmo tempo o usu√°rio quer continuar navegando na lista enquanto o sistema consulta o banco de dados, grava o log e exporta os dados retornados.

Para isso, criei uma nova thread e coloquei ela em background, quando termina a execução o usuário recebe uma mensagem. Veja o código 1.

//creating background thread
new Thread(async () =>
{
    Thread.CurrentThread.IsBackground = true;

	//converting data to csv file
    var isExported = await ExportToCSV(responseMessageFromPreview);

    if (isExported)
    {
		MessageBox.Show(String.Format(UILabels.ExcelExport_SaveFileSucceeded_Message), UILabels.ExcelExport_SaveFileSucceeded_Title, MessageBoxButton.OK, MessageBoxImage.Information);
    }	
}).Start();

Código 1 - Criando thread

Note que comecei com o código new Thread(async () => para que reserve uma parte do sistema e seja executado em uma nova thread, já que temos um processado muito potente nos computadores e smartphones hoje em dia.

A próxima linha eu informei que essa thread deve ser feita em background com a linha Thread.CurrentThread.IsBackground = true.

Depois chamei o método para exportar os dados e no final coloquei que isso tudo vai começar chamando o método .Start().

Dessa forma o sistema continua funcionando enquanto por tr√°s os dados est√£o sendo exportados para o usu√°rio.

Espero que tenha gostado e qualquer d√ļvida pode entrar em contato comigo pelo site mauriciojunior.net.

Existe um curso de C# que eu mostro mais detalhes sobre isso e muito mais no site plataforma.academy. Acesse lá e veja como é bom estudar na prática.