Cómo enviar un elemento de trabajo al grupo de subprocesos mediante C#

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

En esta página

Resumen

En este artículo paso a paso se muestra cómo enviar un método para el grupo de subprocesos para su ejecución.

En el entorno. NET, cada proceso tiene un grupo de subprocesos que puede utilizar para ejecutar métodos de forma asincrónica.

Requisitos


En la lista siguiente se describe el hardware, el software, la infraestructura de red y los Service Packs recomendados que necesitará:
  • Microsoft Visual Studio .NET o Microsoft Visual Studio 2005
En este artículo se supone que está familiarizado con los temas siguientes:
  • Visual C# lenguaje de programación

Crear una aplicación Visual en C# que utiliza el grupo de subprocesos

  1. Inicie Microsoft Visual Studio .NET o Microsoft Visual Studio 2005.
  2. Cree un nuevo proyecto de aplicación de Windows de Visual C# denominado PoolDemo.
  3. Utilice el cuadro de herramientas para agregar un control Button al formulario. El nombre predeterminado para el control Button es button1.
  4. Haga clic con el botón secundario en el formulario y, a continuación, haga clic en Ver código .
  5. Pegue la siguiente directiva using después de las directivas using existente, pero antes la declaración del espacio de nombres PoolDemo :
    using System.Threading;
    					
  6. Vuelva a la vista Diseño y, a continuación, haga doble clic en button1 . Pegue el código siguiente en el controlador de eventos Button1_Click :
    private void button1_Click(object sender, System.EventArgs e)
    {
    	WaitCallback wcb = new WaitCallback(GetSysDirSize);
    	try
    	{
    		ThreadPool.QueueUserWorkItem(wcb);
    		MessageBox.Show("The work item has been placed on the queue");
    	}
    	catch (Exception ex)
    	{
    		MessageBox.Show("Error: " + ex.Message);
    	}
    }
    					
  7. Pegue el código siguiente dentro del cuerpo de la clase Form1 . El método GetSysDirSize calcula el número total de bytes que se almacenan en el directorio del sistema. GetSysDirSize llama a otro método denominado DirSize para realizar el cálculo.

    Nota : esta tarea puede tardar unos minutos para ejecutar.
    private void GetSysDirSize(object state)
    {
    	long total_length = DirSize(Environment.SystemDirectory);
    	this.Text = total_length.ToString();
    }
    
    private long DirSize(string path)
    {
    	long sz = 0;
    	System.IO.DirectoryInfo d = new System.IO.DirectoryInfo(path);
    	
    	// List files.
    	foreach(System.IO.FileInfo f in d.GetFiles())
    	{
    		sz += f.Length;
    	}
    
    	// Recurse into directories.
    	foreach(System.IO.DirectoryInfo dx in d.GetDirectories())
    	{
    		sz += DirSize(dx.FullName);
    	}
    
    	return sz;
    }
    					

Probar el ejemplo

  1. Presione CTRL+F5 para ejecutar la aplicación.
  2. Cuando aparece el formulario, haga clic en el botón. Cuando aparezca el cuadro de mensaje que el elemento de trabajo se ha colocado en la cola , haga clic en Aceptar para cerrar el cuadro de mensaje y volver al formulario principal. Transcurridos unos segundos, el tamaño total en el directorio del sistema se muestra en el título del formulario. La longitud del retraso depende de la velocidad de su equipo y el número de archivos en el directorio del sistema. El cálculo de los tamaños de archivo tiene lugar en un subproceso en el grupo de subprocesos.

Propiedades

Id. de artículo: 315460 - Última revisión: lunes, 11 de diciembre de 2006 - Versión: 2.3
La información de este artículo se refiere a:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Palabras clave: 
kbmt kbhowtomaster kbsample kbthread KB315460 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): 315460

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