Uso de Visual C# para crear un subproceso

Puede escribir aplicaciones multiproceso en Microsoft Visual C# .NET o en Visual C#. En este artículo se describe cómo una sencilla aplicación de Visual C# puede crear y administrar subprocesos.

Versión original del producto: Visual C#
Número de KB original: 815804

Requisitos

En la lista siguiente se describen el hardware, el software, la infraestructura de red y los Service Pack recomendados que necesita:

  • Windows o Windows Server
  • Visual C# .NET o Visual C#

En este artículo se supone que está familiarizado con los temas siguientes:

  • Programación de Visual C#
  • Entorno de desarrollo integrado (IDE) de Visual Studio .NET o IDE de Visual Studio

En este artículo se hace referencia al espacio de nombres System.Threadingbiblioteca de clases de .NET Framework .

Creación de una aplicación de Visual C# con subprocesos

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

  2. Cree un nuevo proyecto de aplicación windows de Visual C# denominado ThreadWinApp.

  3. Agregue un control Botón al formulario. De forma predeterminada, el botón se denomina Button1.

  4. Agregue un componente ProgressBar al formulario. De forma predeterminada, la barra de progreso se denomina ProgressBar1.

  5. Haga clic con el botón derecho en el formulario y, a continuación, haga clic en Ver código.

  6. Agregue la siguiente instrucción al principio del archivo:

    using System.Threading;
    
  7. Agregue el siguiente button1_Click controlador de eventos para Button1:

    private void button1_Click(object sender, System.EventArgs e)
    {
        MessageBox.Show("This is the main thread");
    }
    
  8. Agregue la siguiente variable a la Form1 clase :

    private Thread trd;
    
  9. Agregue el siguiente método a la clase 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:

    Este es el código que subyace al subproceso. Este código es un bucle infinito que incrementa o disminuye aleatoriamente el valor de ProgressBar1 y, a continuación, espera 100 milisegundos antes de continuar.

  10. Agregue el siguiente Form1_Load controlador de eventos para Form1. Este código crea un nuevo subproceso, convierte el subproceso en un subproceso en segundo plano y, a continuación, inicia el subproceso.

    private void Form1_Load(object sender, System.EventArgs e)
    {
        Thread trd = new Thread(new ThreadStart(this.ThreadTask));
        trd.IsBackground = true;
        trd.Start();
    }
    

Comprobar que funciona

  1. Compile y ejecute la aplicación. Observe que el valor de ProgressBar1 cambia aleatoriamente. Este es el nuevo subproceso en funcionamiento.

  2. Para demostrar que el subproceso principal es independiente del subproceso que cambia el valor de ProgressBar1, haga clic en el botón del formulario. Recibirá un cuadro de diálogo con el siguiente mensaje de error:

    Este es el subproceso principal

Espere la entrada. Observe que el valor de ProgressBar1continues que se va a cambiar.

Solucionar problemas

En aplicaciones más complejas, asegúrese de sincronizar varios subprocesos al acceder a variables compartidas. Para obtener más información, consulte la instrucción lock y los temas relacionados en la documentación de ayuda en línea de Visual C# .NET.

Referencias

Para obtener más información, vea Thread (Clase).