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: Oggetto visivo C#
Numero KB originale: 815804
Requisiti
L'elenco seguente descrive l'hardware, il software, l'infrastruttura di rete e i Service Pack consigliati necessari:
- Windows o Windows Server
- Visual C# .NET o Visual C#
Questo articolo presuppone che si abbia familiarità con gli argomenti seguenti:
- Programmazione di Visual C#
- Ambiente di sviluppo integrato (IDE) di Visual Studio .NET 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 Pulsante al modulo. Per impostazione predefinita, il pulsante è denominato Button1.
Aggiungere un componente ProgressBar al modulo. Per impostazione predefinita, l'indicatore di stato è denominato 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 seguente metodo nella 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 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. Si tratta del nuovo thread in esecuzione.
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 ProgressBar1 continua a cambiare.
Risoluzione dei problemi
Nelle applicazioni più complesse assicurarsi di sincronizzare più thread quando si accede alle 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.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per