Entendendo encadeamentos e tarefas
Explore encadeamentos e tarefas para gerenciar o processamento paralelo em C#
Entendendo encadeamentos e tarefas é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 3 de 5. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 5 aulas no total.
Introdução à execução concorrente e às tarefas
Entendendo a execução concorrente e as tarefas
Boas-vindas à próxima lição! Nesta lição, você aprenderá sobre execução concorrente e tarefas em C#, que permitem executar várias operações simultaneamente para obter melhor desempenho. Vamos começar!

O que é execução concorrente?
O que é execução concorrente?
A execução concorrente é o processo de executar várias operações simultaneamente. Cada linha de execução representa um fluxo de controle separado no seu aplicativo.
Ponto principal: a execução concorrente melhora o desempenho ao utilizar vários núcleos do processador.
Criando e iniciando linhas de execução
Criando e iniciando linhas de execução
Você pode criar e iniciar linhas de execução usando a classe Thread. Exemplo:
using System;
using System.Threading;
class Program {
static void Main() {
Thread thread = new Thread(PrintNumbers);
thread.Start();
Console.WriteLine("Main thread is running...");
}
static void PrintNumbers() {
for (int i = 1; i <= 5; i++) {
Console.WriteLine(i);
Thread.Sleep(1000); // Pause for 1 second
}
}
}
Introdução às tarefas
Introdução às tarefas
As tarefas fornecem uma abstração de nível mais alto para programação concorrente em comparação com as linhas de execução. A classe Task faz parte da Biblioteca de Paralelismo de Tarefas (TPL) em C#.
Exemplo: criando e iniciando uma tarefa:
Dica: as tarefas são mais fáceis de gerenciar e oferecem um tratamento de erros melhor em comparação com as linhas de execução.
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
Task task = Task.Run(() => {
for (int i = 1; i <= 5; i++) {
Console.WriteLine(i);
Task.Delay(1000).Wait();
}
});
Console.WriteLine("Main thread is running...");
task.Wait(); // Wait for the task to complete
}
}
Usando Parallel.For e Parallel.ForEach
Usando Parallel.For e Parallel.ForEach
A classe Parallel em C# permite executar loops em paralelo para obter melhor desempenho. Exemplo:
Ponto principal: use Parallel.For e Parallel.ForEach para tarefas que exigem muitos dados e podem ser executadas de forma concorrente.
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
Parallel.For(0, 5, i => {
Console.WriteLine($"Processing {i} on thread {Task.CurrentId}");
});
Console.WriteLine("All tasks completed.");
}
}
Tratando exceções em tarefas
Tratando exceções em tarefas
Você pode capturar exceções em tarefas usando um bloco try-catch ou a propriedade Task.Exception. Exemplo:
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
try {
Task task = Task.Run(() => {
throw new InvalidOperationException("Task failed!");
});
task.Wait();
} catch (AggregateException ex) {
Console.WriteLine("Error: " + ex.InnerException.Message);
}
}
}
Desafio prático
Desafio prático
Crie um programa que inicie várias tarefas para processar números em paralelo e exiba seus quadrados. Exemplo:
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
int[] numbers = { 1, 2, 3, 4, 5 };
Parallel.ForEach(numbers, number => {
Console.WriteLine($"Square of {number}: {number * number}");
});
}
}
Práticas recomendadas para execução concorrente e tarefas
Práticas recomendadas para execução concorrente e tarefas
Veja algumas práticas recomendadas:
- Prefira
TaskaThreadpara concorrência de alto nível. - Use classes
Parallelpara operações que exigem muitos dados. - Trate exceções corretamente para garantir aplicativos robustos.
- Limite o número de linhas de execução ou tarefas para evitar contenção de recursos.
Dica: use programação async quando as operações de E/S predominarem e use linhas de execução ou tarefas para tarefas limitadas pela CPU.
Ótimo trabalho!
Ótimo trabalho!
Parabéns! Você aprendeu os fundamentos da execução concorrente e das tarefas em C#. Na próxima lição, vamos nos aprofundar em delegates e expressões lambda, dois recursos avançados para programação funcional. Vamos continuar programando!

Perguntas Frequentes
A aula “Entendendo encadeamentos e tarefas” é grátis?
Sim — o texto completo de “Entendendo encadeamentos e tarefas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 5 aulas no total.
O que vou aprender em “Entendendo encadeamentos e tarefas”?
Explore encadeamentos e tarefas para gerenciar o processamento paralelo em C# Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C# Academy?
Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 5.
Quanto tempo leva a aula “Entendendo encadeamentos e tarefas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C# Academy?
Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Genéricos em C#
- Async e Await: trabalhando com código assíncrono
- Entendendo encadeamentos e tarefas
- Explorando delegados e lambdas
- Entendendo a reflexão em C#