- 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.