Usar o Visual C# para criar um thread

Você pode escrever aplicativos multithread no Microsoft Visual C# .NET ou no Visual C#. Este artigo descreve como um aplicativo visual C# simples pode criar e gerenciar threads.

Versão original do produto: Visual C#
Número de KB original: 815804

Requisitos

A lista a seguir descreve os pacotes de serviço, software, infraestrutura de rede e hardware recomendados que você precisa:

  • Windows ou Windows Server
  • Visual C# .NET ou Visual C#

Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:

  • Programação do Visual C#
  • Ambiente de Desenvolvimento Integrado do Visual Studio .NET (IDE) ou IDE do Visual Studio

Este artigo refere-se ao namespace System.Threadingda Biblioteca de Classes .NET Framework .

Criar um aplicativo Visual C# com threads

  1. Inicie o Visual Studio .NET, Visual Studio ou Visual C# Express Edition.

  2. Crie um novo projeto do Aplicativo Windows do Visual C# chamado ThreadWinApp.

  3. Adicione um controle Button ao formulário. Por padrão, o botão se chama Button1.

  4. Adicione um componente ProgressBar ao formulário. Por padrão, a barra de progresso se chama ProgressBar1.

  5. Clique com o botão direito do mouse no formulário e clique em Exibir Código.

  6. Adicione a seguinte instrução ao início do arquivo:

    using System.Threading;
    
  7. Adicione o seguinte button1_Click manipulador de eventos para Button1:

    private void button1_Click(object sender, System.EventArgs e)
    {
        MessageBox.Show("This is the main thread");
    }
    
  8. Adicione a seguinte variável à Form1 classe:

    private Thread trd;
    
  9. Adicione o seguinte método à classe Form1:

    private void ThreadTask ()
    {
        int stp;
        int newval;
        Random rnd = new Random ();
    
        while (true)
        {
            stp = this.progressBar1.Step * rnd.Next (-1, 2);
            newval = this.progressBar1.Value + stp;
            if (newval > this.progressBar1.Maximum)
                newval = this.progressBar1.Maximum;
            else if (newval < this.progressBar1.Minimum)
                newval = this.progressBar1.Minimum;
            this.progressBar1.Value = newval;
            Thread.Sleep (100);
        }
    }
    

    Observação

    Este é o código que está por trás do thread. Esse código é um loop infinito que incrementa ou decrementa aleatoriamente o valor no ProgressBar1 e aguarda 100 milissegundos antes de continuar.

  10. Adicione o manipulador de eventos a seguir Form1_Load para o Form1. Esse código cria um novo thread, faz do thread um thread em segundo plano e, em seguida, inicia o thread.

    private void Form1_Load(object sender, System.EventArgs e)
    {
        Thread trd = new Thread(new ThreadStart(this.ThreadTask));
        trd.IsBackground = true;
        trd.Start();
    }
    

Verificar se ele funciona

  1. Crie e execute o aplicativo. Observe que o valor no ProgressBar1 é alterado aleatoriamente. Este é o novo thread em operação.

  2. Para demonstrar que o thread main é independente do thread que altera o valor do ProgressBar1, clique no botão no formulário. Você recebe uma caixa de diálogo com a seguinte mensagem de erro:

    Este é o thread main

Aguarde a entrada. Observe que o valor em ProgressBar1 continua a ser alterado.

Solução de problemas

Em aplicativos mais complexos, certifique-se de sincronizar vários threads ao acessar variáveis compartilhadas. Para obter mais informações, consulte a instrução de bloqueio e os tópicos relacionados na documentação de ajuda do .NET do Visual C# online.

Referências

Para obter mais informações, consulte Classe Thread.