Como criar threads no Visual C++ .NET ou no Visual C++ 2005

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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 815805
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 315577.

Este artigo se refere aos seguintes namespaces Microsoft .NET Framework Class Library:
  • System::Threading

NESTA TAREFA

Sumário
Você pode escrever aplicativos multithread no Microsoft Visual C++ .NET ou no Microsoft Visual C++ 2005. Este artigo descreve como um aplicativo simples do Visual C++ .NET ou Visual C++ 2005 pode criar e gerenciar segmentos.

back to the top

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Windows Server 2003, Microsoft Windows 2000 ou Microsoft Windows XP
  • Microsoft Visual C++ .NET ou Visual C++ 2005
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • O Visual C++ programação
  • O Visual Studio .NET IDE ou IDE Visual Studio 2005
back to the top

Criar um aplicativo Visual C++ .NET ou Visual C++ 2005 com threads

  1. Inicie o Microsoft Visual Studio .NET 2003 ou Microsoft Visual Studio 2005.
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Clique em Projetos do Visual c++ em Tipos de projeto e, em seguida, clique em Windows Forms Application (. NET) em modelos . Nomeie o projeto ThreadWinApp.

    Observação No Visual Studio 2005, clique em Visual C++ em Tipos de projeto e, em seguida, clique em Windows Forms Application em modelos .
  4. Adicione um controle de botão ao Form1. Por padrão, o botão é denominado Button1 .
  5. Adicione um controle ProgressBar ao Form1. Por padrão, a barra de progresso é denominada progressBar1 .
  6. Clique com o botão direito do mouse no Form1 e, em seguida, clique em View Code .
  7. Adicione a instrução a seguir ao início do arquivo.
    using namespace System::Threading;
  8. Clique duas vezes em button1 em Form1. Modificar o manipulador de eventos button1 como segue.
    private: System::Void button1_Click(System::Object *  sender, System::EventArgs *  e){    MessageBox::Show(S"This is the main thread");}
  9. Adicione a seguinte variável a Form1 class.
    private: Thread *trd;
  10. Adicione o seguinte código no início do método Dispose() do class. Form1
    if (trd->IsAlive)	trd->Abort();
  11. Adicione o seguinte código para o Form1 class.
    __delegate void DelegateThreadTask();private: void ThreadTask(){	int stp;	int newval;	Random *rnd=new Random();	if (progressBar1->InvokeRequired == false)		{		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;		}	else 		{		DelegateThreadTask *myThreadDelegate = new DelegateThreadTask(this,ThreadTask);		this->Invoke(myThreadDelegate);					}}private: void repeat(){		while(true)	{	ThreadTask();	Thread::Sleep(100);	}}
    anotações você deve adicionar o common language runtime oferecem suporte a compilador opção (/ CLR: oldSyntax) no Visual C++ 2005 a compilar com êxito o exemplo de código anterior. Para adicionar a opção de compilador de suporte de tempo de execução idioma comum no Visual C++ 2005, siga estas etapas:
    1. Clique em Project e clique em <ProjectName> propriedades .

      Observação <ProjectName> é um espaço reservado para o nome do projeto.
    2. Expanda Configuration Properties e, em seguida, clique em Geral .
    3. Clique para selecionar Common Language Runtime suporte, sintaxe antiga (/ CLR: oldSyntax) no projeto oferece suporte a Common Language Runtime configuração no painel à direita, clique em Aplicar e em seguida, clique em OK .
    Para obter mais informações sobre o common language runtime oferece suporte à opção do compilador, visite o seguinte site da Microsoft:
    / clr (Common Language Runtime Compilation)
    http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
    Isso é o código que dá suporte o thread. Esse código é um infinito loop que aleatoriamente incrementos ou diminui o valor no nome da variável progressBar1 e espera 100 milissegundos antes de continuar.
  12. Clique duas vezes em qualquer lugar no Form1. Modificar o manipulador de evento Load para Form1 da seguinte maneira. Esse código cria um novo thread, torna o thread de um segmento de plano de fundo e, em seguida, inicia o thread.
    private: System::Void Form1_Load(System::Object *  sender, System::EventArgs *  e){    ThreadStart *myThreadDelegate = new ThreadStart(this, repeat);    trd = new Thread(myThreadDelegate);    trd->IsBackground = true;    trd->Start();}
back to the top

Verificar se ele funciona

  1. Criar e executar o aplicativo. Observe que o valor no nome da variável progressBar1 alterado aleatoriamente. Este é o novo thread em operação.
  2. Para demonstrar que o thread principal é independente do thread que altera o valor progressBar1 , clique no botão no formulário. Uma caixa de diálogo com a seguinte mensagem de informações é exibida:
    Este é o thread principal
  3. Aguarde a entrada. Observe que o valor progressBar1 continua a alterar.
back to the top

Solução de problemas

Aplicativos mais complexos, certifique-se que você sincronizar vários segmentos quando você acessa variáveis compartilhadas. Para obter mais informações, consulte a instrução lock e os tópicos relacionados no Visual C++ .NET ajuda documentação on-line.

back to the top
Referências
Para obter mais informações sobre a classe thread , consulte a seguinte site da Microsoft Developer Network (MSDN) ou da documentação do Microsoft .NET Framework SDK: Para obter mais informações sobre a segurança de multithreading , consulte a seguinte site da Microsoft Developer Network (MSDN) ou da documentação do Microsoft .NET Framework SDK: back to the top
Thread, Threading, criar segmento

Propriedades

ID do Artigo: 815805 - Última Revisão: 11/14/2007 06:26:28 - Revisão: 4.4

Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition

  • kbmt kbthread kbhowtomaster KB815805 KbMtpt
Comentários