Come creare un thread utilizzando C#

Traduzione articoli Traduzione articoli
Identificativo articolo: 815804 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

È possibile scrivere applicazioni con multithreading in Microsoft Visual C# .NET o in Microsoft Visual C#. In questo articolo viene descritto come una semplice applicazione Visual C# può creare e gestire thread.

Requisiti

Nell'elenco seguente sono indicati hardware, software, infrastruttura di rete e i service pack è necessario:
  • Microsoft Windows 2000, Microsoft Windows XP o Microsoft Windows Server 2003
  • Microsoft Visual C# .NET o Microsoft Visual C# 2005
In questo articolo si presume la conoscenza dei seguenti argomenti:
  • Programmazione di Visual C#
  • Ambiente Visual Studio .NET integrato sviluppo (IDE) o l'IDE di Visual Studio 2005

Creare un'applicazione Visual C# con thread

  1. Avviare Microsoft Visual Studio. NET, Microsoft Visual Studio 2005 o Microsoft Visual C# 2005 Express Edition.
  2. Creare un nuovo progetto applicazione Windows di Visual C# denominato ThreadWinApp.
  3. Aggiungere un controllo Button al form. Per impostazione predefinita, il pulsante è denominato Button1 .
  4. Aggiungere un componente di ProgressBar al form. Per impostazione predefinita, la barra di avanzamento è denominata ProgressBar1 .
  5. Fare clic con il pulsante destro del mouse il modulo e quindi scegliere Visualizza codice .
  6. Aggiungere la seguente istruzione all'inizio del file:
    using System.Threading;
  7. Aggiungere il seguente gestore di eventi Click per Button1 :
    private void button1_Click(object sender, System.EventArgs e)
    {
    	MessageBox.Show("This is the main thread");
    }
  8. Aggiungere la seguente variabile alla classe Form1 :
    private Thread trd;
    
  9. Aggiungere il seguente metodo alla 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 questo è il codice sottostante il thread. Questo codice è un infinito ciclo che incrementi in modo casuale o decrementa il valore ProgressBar1 e attende quindi 100 millisecondi prima di continuare.
  10. Consente di aggiungere il seguente gestore di eventi Load per Form1 . Questo codice crea un nuovo thread, rende il thread di un thread in background e quindi avvia il thread.
    private void Form1_Load(object sender, System.EventArgs e)
    {
    	Thread trd = new Thread(new ThreadStart(this.ThreadTask));
    	trd.IsBackground = true;
    	trd.Start();
    }

Verifica del funzionamento

  1. Compilare ed eseguire l'applicazione. Si noti che il valore di ProgressBar1 viene modificato in modo casuale. Questo indica che è il nuovo thread è in funzione.
  2. Per dimostrare che il thread principale è indipendente dal thread che modifica il valore di ProgressBar1 , fare clic sul pulsante nel modulo. Viene visualizzata una finestra di dialogo con il seguente messaggio di errore:
    This is the main thread
Attendere l'input. Si noti che il valore di ProgressBar1 continua a modificare.

Risoluzione dei problemi

In applicazioni più complesse assicurarsi di sincronizzare thread multipli quando si accede a variabili condivise. Per ulteriori informazioni, vedere istruzione lock e argomenti correlati in Visual C# .NET Guida in linea di.

Riferimenti

Per ulteriori informazioni, visitare il seguente sito Web Microsoft o la documentazione di .NET Framework SDK:
"Classe thread"
http://msdn2.microsoft.com/en-us/library/system.threading.thread(vs.71).aspx

Proprietà

Identificativo articolo: 815804 - Ultima modifica: lunedì 20 agosto 2007 - Revisione: 2.10
Le informazioni in questo articolo si applicano 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
Chiavi: 
kbmt kbnamespace kbthreadsync kbthread kbhowtomaster KB815804 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 815804
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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