Advertisement
Fhernd

ParametrosThread.cs

Jul 24th, 2014
2,216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.17 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3.  
  4. namespace Recetas.Multithreading.Cap01.R0108
  5. {
  6.     // Clase utilitaria como contenedora de datos
  7.     // para un método método ejecutado en un thread:
  8.     public class UtilitarioThread
  9.     {
  10.         private readonly int _iteraciones;
  11.        
  12.         public UtilitarioThread (int iteraciones)
  13.         {
  14.             _iteraciones = iteraciones;
  15.         }
  16.        
  17.         // Imprime los números desde el 1 hasta
  18.         // el número de iteraciones:
  19.         public void ContarNumeros()
  20.         {
  21.             for (int i = 1; i <= _iteraciones; ++i)
  22.             {
  23.                 Thread.Sleep (TimeSpan.FromSeconds(0.5));
  24.                 Console.WriteLine ("El thread `{0}` imprime {1}",
  25.                     Thread.CurrentThread.Name,
  26.                     i.ToString()
  27.                 );
  28.             }
  29.         }
  30.     }
  31.    
  32.     public sealed class ParametrosThread
  33.     {
  34.         // Método static para contar números según
  35.         // el argumento pasado al inicio de la
  36.         // ejecución de un thread:
  37.         private static void Contar (object iteraciones)
  38.         {
  39.             ContarNumeros((int)iteraciones);
  40.         }
  41.        
  42.         // Imprime los números desde el 1 hasta
  43.         // el número de iteraciones:
  44.         private static void ContarNumeros(int iteraciones)
  45.         {
  46.             for (int i = 1; i <= iteraciones; ++i)
  47.             {
  48.                 Thread.Sleep (TimeSpan.FromSeconds(0.5));
  49.                 Console.WriteLine ("El thread `{0}` imprime {1}",
  50.                     Thread.CurrentThread.Name,
  51.                     i.ToString()
  52.                 );
  53.             }
  54.         }
  55.        
  56.         // Imprime un número en la salida estándar:
  57.         private static void ImprimirNumero(int numero)
  58.         {
  59.             Console.WriteLine (numero.ToString());
  60.         }
  61.        
  62.         public static void Main()
  63.         {
  64.             Console.Title = "Pasar Parámetros a un Thread";
  65.             Console.WriteLine ();
  66.        
  67.             // Creación de instancia de la clase UtilitarioThread:
  68.             UtilitarioThread ut = new UtilitarioThread(10);
  69.             Console.WriteLine ("=== Uso de Thread.Start() ===");
  70.             Thread t1 = new Thread (ut.ContarNumeros);
  71.             t1.Name = "Thread No. 1";
  72.             t1.Start();
  73.             t1.Join ();
  74.            
  75.             Console.WriteLine ("\n=== Uso de Thread.Start(Object) ===");
  76.             Thread t2 = new Thread (new ParameterizedThreadStart(Contar));
  77.             t2.Name = "Thread No. 2";
  78.             t2.Start (8);
  79.             t2.Join();
  80.            
  81.             Console.WriteLine ("\n=== Uso de Expresión Lambda (1)===");
  82.             Thread t3 = new Thread (() => ContarNumeros(12));
  83.             t3.Name = "Thread No. 3";
  84.             t3.Start();
  85.             t3.Join();
  86.            
  87.             Console.WriteLine ("\n=== Uso de Expresión Lambda (2)===");
  88.             int numero = 11;
  89.             Thread t4 = new Thread(() => ImprimirNumero(numero));
  90.             numero = 13;
  91.             Thread t5 = new Thread(() => ImprimirNumero(numero));
  92.             t4.Start();
  93.             t5.Start();
  94.         }
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement