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.Threading
da Biblioteca de Classes do .NET Framework.
Criar um aplicativo Visual C# com threads
Inicie o Visual Studio .NET, Visual Studio ou Visual C# Express Edition.
Crie um novo projeto de aplicativo do Windows em C# chamado ThreadWinApp.
Adicione um controle Button ao formulário. Por padrão, o botão é chamado de Button1.
Adicione um componente ProgressBar ao formulário. Por padrão, a barra de progresso é chamada de ProgressBar1.
Clique com o botão direito do mouse no formulário e clique em Exibir Código.
Adicione a seguinte instrução ao início do arquivo:
using System.Threading;
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"); }
Adicione a seguinte variável à
Form1
classe:private Thread trd;
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.
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
Compile e execute o aplicativo. Observe que o valor em ProgressBar1 muda aleatoriamente. Este é o novo tópico em operação.
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.