0Pricing
C# Academy · Aula

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!

Entendendo encadeamentos e tarefas — ilustração 1

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 Task a Thread para concorrência de alto nível.
  • Use classes Parallel para 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!

Entendendo encadeamentos e tarefas — ilustração 10

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

  1. Genéricos em C#
  2. Async e Await: trabalhando com código assíncrono
  3. Entendendo encadeamentos e tarefas
  4. Explorando delegados e lambdas
  5. Entendendo a reflexão em C#
← Voltar para C# Academy