Condividi tramite


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.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 Button al form. Per impostazione predefinita, il pulsante è denominato Button1.

  4. Aggiungere un componente ProgressBar al form. Per impostazione predefinita, la barra di stato è denominata 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 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.

  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. Questo è il nuovo thread nell'operazione.

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