Compartilhar via


Usar o Visual C# para criar um thread

Você pode escrever aplicativos multithreaded 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 original do KB: 815804

Requisitos

A lista a seguir descreve o hardware, o software, a infraestrutura de rede e os service packs recomendados de 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 Visual C#
  • IDE (Ambiente de Desenvolvimento Integrado) do Visual Studio .NET ou IDE do Visual Studio

Este artigo refere-se ao namespace System.Threadingda Biblioteca de Classes do .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 de aplicativo do Windows em C# chamado ThreadWinApp.

  3. Adicione um controle Button ao formulário. Por padrão, o botão é chamado de Button1.

  4. Adicione um componente ProgressBar ao formulário. Por padrão, a barra de progresso é chamada de 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

    Esse é o código subjacente ao thread. Esse código é um loop infinito que incrementa ou diminui aleatoriamente o valor em ProgressBar1 e, em seguida, aguarda 100 milissegundos antes de continuar.

  10. Adicione o manipulador de eventos a seguir Form1_Load para Form1. Esse código cria um novo thread, torna o 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();
    }
    

Verifique se funciona

  1. Compile e execute o aplicativo. Observe que o valor em ProgressBar1 muda aleatoriamente. Este é o novo tópico em operação.

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

    Este é o tópico principal

Aguarde a entrada. Observe que o valor em ProgressBar1continua a mudar.

Solucionar 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 online do Visual C# .NET.

Referências

Para obter mais informações, consulte Classe de thread.