Como criar um thread utilizando o Visual C#

Traduções de Artigos Traduções de Artigos
Artigo: 815804 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

É possível escrever aplicações multithread no Microsoft Visual C# .NET ou no Microsoft Visual C#. Este artigo descreve como uma aplicação do Visual C# simples pode criar e gerir threads.

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que necessita:
  • Microsoft Windows 2000, Microsoft Windows XP ou Microsoft Windows Server 2003
  • Microsoft Visual C# .NET ou Microsoft Visual C# 2005
Este artigo pressupõe que está familiarizado com os seguintes tópicos:
  • O Visual C# programação
  • Visual Studio .NET Integrated Development Environment (IDE) ou o IDE do Visual Studio 2005

Criar uma aplicação do Visual C# com threads

  1. Inicie o Microsoft Visual Studio. NET, Microsoft Visual Studio 2005 ou Microsoft Visual C# 2005 Express Edition.
  2. Crie um novo projecto de aplicação do Windows do Visual C# denominado ThreadWinApp.
  3. Adicione um controlo de botão ao formulário. Por predefinição, o botão chama Button1 .
  4. Adicione um componente de ProgressBar ao formulário. Por predefinição, a barra de progresso é denominada ProgressBar1 .
  5. Clique com o botão direito do rato no formulário e clique em Ver código .
  6. Adicione a seguinte instrução no início do ficheiro:
    using System.Threading;
  7. Adiciona o processador de eventos clique em seguinte para Button1 :
    private void button1_Click(object sender, System.EventArgs e)
    {
    	MessageBox.Show("This is the main thread");
    }
  8. Adicione a seguinte variável à classe Form1 :
    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);
    	}
    }
    Nota este é o código subjacente ao thread. Este código é um infinito repetir esse aleatoriamente incrementos ou diminui o valor ProgressBar1 e, em seguida, aguarda 100 milisegundos antes de continuar.
  10. Adicione o processador de evento carregar seguinte para o Form1 . Este código cria um novo thread, faz com que o thread de 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 funciona

  1. Criar e executar a aplicação. Repare que o valor ProgressBar1 altera aleatoriamente. Este é o novo thread numa 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. É apresentada uma caixa de diálogo com a seguinte mensagem de erro:
    This is the main thread
A aguardar entrada. Repare que o valor ProgressBar1 continua a alterar.

Resolução de problemas

Aplicações mais complexas, certifique-se que sincronize vários threads quando acede a variáveis partilhadas. Para mais informações, consulte a declaração de bloqueio e os Tópicos relacionados na documentação do Visual C# .NET ajuda online.

Referências

Para obter mais informações, visite o seguinte Web site da Microsoft ou a documentação do .NET Framework SDK:
"Módulo classe"
http://msdn2.microsoft.com/en-us/library/system.threading.thread(vs.71).aspx

Propriedades

Artigo: 815804 - Última revisão: 20 de agosto de 2007 - Revisão: 2.10
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft ADO.NET 1.0
  • Microsoft Common Language Runtime (included with the .NET Framework) 1.0
  • Microsoft Visual C# 2005 Express Edition
Palavras-chave: 
kbmt kbnamespace kbthreadsync kbthread kbhowtomaster KB815804 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 815804

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com