Executando thread em background
veja como funciona
- 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.
Related articles
Criando um Assistente de IA com C#, RAG, LLM, Embeddings, Ollama, Chroma DB e .NET
A inteligência artificial se tornou parte...
C# even or odd
Real code using C#
Curso básico de C# com aulas grátis
10 aulas gratuitas para você que quer aprender uma
✓ Read full articles ✓ Read/write forums ✓ Access podcast ✓ Access full jobs opportunities ✓ Access eBooks ✓ Access magazine ✓ Access videos |
Subscribe now $5/mo |
✓ Read open articles x Read/write forums ✓ Access podcast x Access full jobs opportunities x Access eBooks x Access magazine x Access videos |