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.