Tópico de fundo C#

Resumo : neste tutorial, você aprenderá sobre os threads de segundo plano do C# e a diferença entre os threads de segundo plano e de primeiro plano.

Introdução aos threads de segundo plano em C#

O .NET possui dois tipos de threads:

  • Primeiro plano
  • Fundo

Quando um programa C# é executado, o .NET cria um thread que é conhecido como thread principal .

Um thread de primeiro plano é um tipo de thread executado com a mesma prioridade do thread principal. Um thread em primeiro plano mantém o aplicativo em execução até que seja concluído ou anulado. Em outras palavras, o aplicativo não será encerrado se houver threads em primeiro plano em execução.

Por padrão, os threads criados usando a Threadclasse são threads de primeiro plano. Além disso, o thread principal é um thread de primeiro plano.

O exemplo a seguir ilustra como funciona um thread em primeiro plano:

static void DoWork()
{
    for (int i = 0; i < 5; i++)
    {
        Thread.Sleep(100);
        Console.WriteLine("Foreground thread running...");
        
    }
}

var t = new Thread(DoWork);
t.Start();


// Do some work in the main thread
for (int i = 0; i < 2; i++)
{
    Thread.Sleep(100);
    Console.WriteLine("Main thread running...");
    
}Linguagem de código:  C#  ( cs )

Saída:

Main thread running...
Foreground thread running...
Main thread running...
Foreground thread running...
Foreground thread running...
Foreground thread running...
Foreground thread running...Linguagem de código:  C#  ( cs )

Como funciona.

Primeiro, defina o DoWork()método que exibe a mesma mensagem cinco vezes a cada 100 ms:

static void DoWork()
{
    for (int i = 0; i < 5; i++)
    {
        Console.WriteLine("Foreground thread running...");
        Thread.Sleep(100);
    }
}Linguagem de código:  C#  ( cs )

Segundo, crie um novo thread que execute o DoWork()método e inicie-o:

var t = new Thread(DoWork);
t.Start();Linguagem de código:  C#  ( cs )

Terceiro, exiba a mesma mensagem duas vezes no thread principal a cada 100 ms:

// Do some work in the main thread
for (int i = 0; i < 2; i++)
{
    Console.WriteLine("Main thread running...");
    Thread.Sleep(100);
}Linguagem de código:  C#  ( cs )

A saída mostra que após o término do thread principal, o thread de primeiro plano ainda está em execução. Portanto, você vê cinco mensagens do thread em primeiro plano.

Ao contrário de um thread em primeiro plano, um thread em segundo plano é um tipo de thread executado em segundo plano e não mantém o aplicativo em execução após o término do thread principal.

Em outras palavras, independentemente de algum thread em segundo plano estar em execução, o aplicativo será encerrado se todos os threads em primeiro plano terminarem.

Para alterar um thread de primeiro plano para segundo plano, você usa a IsBackgroundpropriedade do objeto Thread. Por exemplo:

static void DoWork()
{
    for (int i = 0; i < 5; i++)
    {
        Thread.Sleep(100);
        Console.WriteLine("Background thread running...");
        
    }
}

var t = new Thread(DoWork);
t.IsBackground = true;
t.Start();


// Do some work in the main thread
for (int i = 0; i < 2; i++)
{
    Thread.Sleep(100);
    Console.WriteLine("Main thread running...");
}Linguagem de código:  C#  ( cs )

Saída:

Main thread running...
Background thread running...
Main thread running...Linguagem de código:  C#  ( cs )

Neste exemplo, mudamos o thread do primeiro plano para o segundo plano. Quando o thread principal é encerrado, o thread de segundo plano também é encerrado. Portanto, você verá apenas uma mensagem do thread em segundo plano.

Aplicativos de thread em segundo plano C#

Threads de segundo plano têm as seguintes aplicações práticas:

  • Melhorando a capacidade de resposta do aplicativo: Threads em segundo plano podem ser usados ​​para realizar operações demoradas, como E/S de arquivos, operações de rede ou consultas de banco de dados, sem obstruir o thread de UI principal.
  • Processamento paralelo: O desempenho do aplicativo pode ser bastante melhorado usando threads em segundo plano para realizar processamento paralelo de grandes conjuntos de dados ou cálculos complicados.
  • Processamento em segundo plano: tarefas que não precisam de entrada do usuário, incluindo sincronização de dados, backup ou manutenção, podem ser realizadas em segundo plano usando threads em segundo plano.
  • Aplicativos de rede multithread: Threads de segundo plano podem ser usados ​​em aplicativos de rede multithread para lidar com várias solicitações simultaneamente.

Resumo

  • Um thread em primeiro plano mantém o aplicativo em execução até que seja concluído ou anulado.
  • Um thread em segundo plano é um tipo de thread que não mantém o aplicativo em execução após o término do thread principal.
  • Use a IsBackgroundpropriedade para alterar um thread de primeiro plano para segundo plano.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *