Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. using System;
  2. using System.Threading;
  3.  
  4. namespace Recetas.Cap04
  5. {
  6.     // Esta clase contiene información de una tarea
  7.     // ejecutado por el thread ThreadPool.
  8.     public class InfoTarea
  9.     {
  10.         public string Mensaje;
  11.         public int Valor;
  12.        
  13.         public InfoTarea (string texto, int numero)
  14.         {
  15.             Mensaje = texto;
  16.             Valor = numero;
  17.         }
  18.     }
  19.    
  20.     public sealed class UsoQueueUserWorkItemV2
  21.     {
  22.         public static void Main()
  23.         {
  24.             // Crea una instancia de InfoTarea con la
  25.             // información requerida por una tarea:
  26.             InfoTarea it = new InfoTarea ("Muestra el valor del campo `Valor` es {0}.", 13);
  27.            
  28.             // La tarea se agrega a la cola de ejcución de threads:
  29.             ThreadPool.QueueUserWorkItem (new WaitCallback(ProcesoThread), it);
  30.            
  31.             Console.WriteLine ("\nEl método Main lleva a cabo algunas operaciones.");
  32.            
  33.             // El thread principal se detiene 1 segundo, mientras se ejecutan el pool de
  34.             // threads. Esto es necesario debido a que el thread principal no espera
  35.             // a que los demás threads finalicen:
  36.             Thread.Sleep (1000);
  37.            
  38.             Console.WriteLine ("El método Main ha finalizado.\n");
  39.         }
  40.        
  41.         // Este método es el encargado de llevar a cabo
  42.         // la tarea de ejecución de threads:
  43.         public static void ProcesoThread (object infoEstado)
  44.         {
  45.             InfoTarea ti = (InfoTarea) infoEstado;
  46.            
  47.             Console.WriteLine (ti.Mensaje, ti.Valor);
  48.         }
  49.     }
  50. }