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.Threading
da Biblioteca de Classes .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 do Aplicativo Windows do Visual C# chamado ThreadWinApp.
Adicione um controle Button ao formulário. Por padrão, o botão se chama Button1.
Adicione um componente ProgressBar ao formulário. Por padrão, a barra de progresso se chama 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
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.
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
Crie e execute o aplicativo. Observe que o valor no ProgressBar1 é alterado aleatoriamente. Este é o novo thread em operação.
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.