Cómo crear un subproceso mediante C#

Seleccione idioma Seleccione idioma
Id. de artículo: 815804 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

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

Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los service pack recomendados que se necesitarán:
  • Microsoft Windows 2000, Microsoft Windows XP o Microsoft Windows Server 2003
  • Microsoft Visual C# .NET o Microsoft Visual C# 2005
En este artículo se supone que está familiarizado con los temas siguientes:
  • Programación Visual C#
  • Entorno de Visual Studio .NET integrado desarrollo (IDE) o el IDE de Visual Studio 2005

Crear una aplicación de C# con subprocesos

  1. Inicie Microsoft Visual Studio. NET, Microsoft Visual Studio 2005 o Microsoft Visual C# 2005 Express Edition.
  2. Cree un nuevo proyecto de aplicación de Windows de Visual C# denominado ThreadWinApp.
  3. Agregue un control Button al formulario. De forma predeterminada, el botón se denomina Button1 .
  4. Agregar un componente de ProgressBar al formulario. De forma predeterminada, la barra de progreso se denomina ProgressBar1 .
  5. Haga clic con el botón secundario en el formulario y haga clic en Ver código .
  6. Agregue la siguiente instrucción al principio del archivo:
    using System.Threading;
  7. Agregue el siguiente controlador de eventos Click de Button1 :
    private void button1_Click(object sender, System.EventArgs e)
    {
    	MessageBox.Show("This is the main thread");
    }
  8. Agregue la siguiente variable a la clase Form1 :
    private Thread trd;
    
  9. Agregue el método siguiente 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 éste es el código que subyace el subproceso. Este código es un infinito bucle que aleatoriamente aumenta o disminuye el valor de ProgressBar1 y, a continuación, espera 100 milisegundos antes de continuar.
  10. Agregue el controlador de eventos siguiente de carga para Form1 . Este código crea un nuevo subproceso, hace que el subproceso un subproceso en segundo plano y, a continuación, se 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. Genere y ejecute la aplicación. Observe que el valor de ProgressBar1 cambia aleatoriamente. Este es el subproceso nuevo en la operación.
  2. Para demostrar que es independiente del subproceso que cambia el valor de ProgressBar1 el subproceso principal, haga clic en el formulario el botón. Aparece un cuadro de diálogo con el siguiente mensaje de error:
    This is the main thread
Esperar la entrada. Observe que el valor de ProgressBar1 sigue cambiar.

Solucionar problemas

En las aplicaciones más complejas, asegúrese de sincronizar múltiples subprocesos cuando tiene acceso a variables compartidas. Para obtener más información, vea la instrucción de bloqueo y temas relacionados en la documentación de C# .NET ayuda en pantalla de Visual.

Referencias

Para obtener más información, visite el siguiente sitio Web de Microsoft o en la documentación del SDK de .NET Framework:
"Clase de subproceso"
http://msdn2.microsoft.com/en-us/library/system.threading.thread(vs.71).aspx

Propiedades

Id. de artículo: 815804 - Última revisión: lunes, 20 de agosto de 2007 - Versión: 2.10
La información de este artículo se refiere a:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft ADO.NET 1.0
  • Microsoft Common Language Runtime (included with the .NET Framework) 1.0
  • Microsoft Visual C# 2005 Express Edition
Palabras clave: 
kbmt kbnamespace kbthreadsync kbthread kbhowtomaster KB815804 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 815804

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com