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.Threadingdella libreria di classi .NET Framework.

Creare un'applicazione Visual C# con thread

  1. Avviare Visual Studio .NET, Visual Studio o Visual C# Express Edition.

  2. Creare un nuovo progetto applicazione Windows Visual C# denominato ThreadWinApp.

  3. Aggiungere un controllo Pulsante al modulo. Per impostazione predefinita, il pulsante è denominato Button1.

  4. Aggiungere un componente ProgressBar al modulo. Per impostazione predefinita, l'indicatore di stato è denominato ProgressBar1.

  5. Fare clic con il pulsante destro del mouse sul modulo e quindi scegliere Visualizza codice.

  6. Aggiungere l'istruzione seguente all'inizio del file:

    using System.Threading;
    
  7. 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");
    }
    
  8. Aggiungere la variabile seguente alla Form1 classe :

    private Thread trd;
    
  9. 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.

  10. 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

  1. Compilare ed eseguire l'applicazione. Si noti che il valore in ProgressBar1 cambia in modo casuale. Si tratta del nuovo thread in esecuzione.

  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 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.