Usare Visual C# per creare un thread
È possibile scrivere applicazioni multithreading in Microsoft Visual C# .NET o in Visual C#. Questo articolo descrive come una semplice applicazione Visual C# può creare e gestire thread.
Versione originale del prodotto: Visual C#
Numero KB originale: 815804
Requisiti
L'elenco seguente illustra i service pack consigliati per hardware, software, infrastruttura di rete e Service Pack necessari:
- Windows o Windows Server
- Visual C# .NET o Visual C#
Questo articolo presuppone che l'utente abbia familiarità con gli argomenti seguenti:
- Programmazione Visual C#
- Visual Studio .NET Integrated Development Environment (IDE) o IDE di Visual Studio
Questo articolo fa riferimento allo spazio dei nomi System.Threading
della libreria di classi .NET Framework .
Creare un'applicazione Visual C# con thread
Avviare Visual Studio .NET, Visual Studio o Visual C# Express Edition.
Creare un nuovo progetto applicazione Windows Visual C# denominato ThreadWinApp.
Aggiungere un controllo Button al form. Per impostazione predefinita, il pulsante è denominato Button1.
Aggiungere un componente ProgressBar al form. Per impostazione predefinita, la barra di stato è denominata ProgressBar1.
Fare clic con il pulsante destro del mouse sul modulo e quindi scegliere Visualizza codice.
Aggiungere l'istruzione seguente all'inizio del file:
using System.Threading;
Aggiungere il gestore eventi seguente
button1_Click
per Button1:private void button1_Click(object sender, System.EventArgs e) { MessageBox.Show("This is the main thread"); }
Aggiungere la variabile seguente alla
Form1
classe :private Thread trd;
Aggiungere il metodo seguente 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); } }
Note
Si tratta del codice sottostante al thread. Questo codice è un ciclo infinito che incrementa o decrementa in modo casuale il valore in ProgressBar1 e quindi attende 100 millisecondi prima che continui.
Aggiungere il gestore eventi seguente
Form1_Load
per Form1. Questo codice crea un nuovo thread, rende il thread 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(); }
Verificare che funzioni
Compilare ed eseguire l'applicazione. Si noti che il valore in ProgressBar1 cambia in modo casuale. Questo è il nuovo thread nell'operazione.
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 messaggio di errore seguente:
Questo è il thread principale
Attendere l'input. Si noti che il valore in ProgressBar1continues da modificare.
Risoluzione dei problemi
Nelle applicazioni più complesse assicurarsi di sincronizzare più thread quando si accede a variabili condivise. Per altre informazioni, vedere l'istruzione lock e gli argomenti correlati nella documentazione della Guida online di Visual C# .NET.
Riferimenti
Per altre informazioni, vedere Classe thread.