Advertisement
Fhernd

MetodoEnNuevoThread.cs

Jul 9th, 2014
1,643
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.29 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3.  
  4. namespace Recetas.CSharp.Cap04.R0406
  5. {
  6.     class DatosThreadStart
  7.     {
  8.         // Campos y propiedades:
  9.         private readonly int iteraciones;
  10.         private readonly string mensaje;
  11.         private readonly int retraso;
  12.        
  13.         public int Iteraciones
  14.         {
  15.             get
  16.             {
  17.                 return iteraciones;
  18.             }
  19.         }
  20.         public string Mensaje
  21.         {
  22.             get
  23.             {
  24.                 return mensaje;
  25.             }
  26.         }
  27.         public int Retraso
  28.         {
  29.             get
  30.             {
  31.                 return retraso;
  32.             }
  33.         }
  34.    
  35.         // constructor:
  36.         public DatosThreadStart (int iteraciones, string mensaje, int retraso)
  37.         {
  38.             this.iteraciones = iteraciones;
  39.             this.mensaje = mensaje;
  40.             this.retraso = retraso;
  41.         }
  42.     }
  43.    
  44.     public sealed class MetodoEnNuevoThread
  45.     {
  46.         public static void Main()
  47.         {
  48.             // Crea un nuevo Thread para ejecutar el método
  49.             // MostrarMensaje:
  50.             Thread threadNuevo = new Thread(
  51.                 new ParameterizedThreadStart ( MostrarMensaje)
  52.             );
  53.            
  54.             // Este thread se ejecuta en primer plano:
  55.             threadNuevo.IsBackground = false;
  56.            
  57.             // Creación de instancia DatosThreadStart para
  58.             // configuración del nuevo thread:
  59.             DatosThreadStart configuracion =
  60.                 new DatosThreadStart (5, "Thread nuevo en ejecución.", 500);
  61.            
  62.             VisorMensajesThread ("Inicio de un nuevo thread.");
  63.            
  64.             // Inicia la ejecución del nuevo thread:
  65.             threadNuevo.Start (configuracion);
  66.            
  67.             // Main continua con otras tareas:
  68.             for (int i = 0; i < 13; ++i)
  69.             {
  70.                 VisorMensajesThread ("El thread Main continua su ejecución.");
  71.                 Thread.Sleep (200);
  72.             }
  73.            
  74.             Console.WriteLine ("\nLa ejecución de Main ha terminado. Presione Enter.");
  75.             Console.ReadLine ();
  76.         }
  77.        
  78.         // Este método presenta información en pantalla
  79.         // de acuerdo a la configuración de ejecución
  80.         // representada en un objeto de clase DatosThreadStart:
  81.         private static void MostrarMensaje(object configuracion)
  82.         {
  83.             DatosThreadStart datos = configuracion as DatosThreadStart;
  84.            
  85.             if (datos != null)
  86.             {
  87.                 for (int i = 0; i < datos.Iteraciones; ++i)
  88.                 {
  89.                     VisorMensajesThread(datos.Mensaje);
  90.                    
  91.                     // Suspende (pausa) el thread por un período específico:
  92.                     Thread.Sleep (datos.Retraso);
  93.                 }
  94.             }
  95.         }
  96.        
  97.         // Método para la visualización de información
  98.         // del estado actual de un thread:
  99.         private static void VisorMensajesThread(string mensaje)
  100.         {
  101.             Console.WriteLine ("[{0,3}] - {1} : {2}",
  102.                 Thread.CurrentThread.ManagedThreadId,
  103.                 DateTime.Now.ToString ("HH:mm:ss.ffff"), mensaje);
  104.         }
  105.     }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement