Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Threading;
- namespace Recetas.Multithreading.Cap01.R0108
- {
- // Clase utilitaria como contenedora de datos
- // para un método método ejecutado en un thread:
- public class UtilitarioThread
- {
- private readonly int _iteraciones;
- public UtilitarioThread (int iteraciones)
- {
- _iteraciones = iteraciones;
- }
- // Imprime los números desde el 1 hasta
- // el número de iteraciones:
- public void ContarNumeros()
- {
- for (int i = 1; i <= _iteraciones; ++i)
- {
- Thread.Sleep (TimeSpan.FromSeconds(0.5));
- Console.WriteLine ("El thread `{0}` imprime {1}",
- Thread.CurrentThread.Name,
- i.ToString()
- );
- }
- }
- }
- public sealed class ParametrosThread
- {
- // Método static para contar números según
- // el argumento pasado al inicio de la
- // ejecución de un thread:
- private static void Contar (object iteraciones)
- {
- ContarNumeros((int)iteraciones);
- }
- // Imprime los números desde el 1 hasta
- // el número de iteraciones:
- private static void ContarNumeros(int iteraciones)
- {
- for (int i = 1; i <= iteraciones; ++i)
- {
- Thread.Sleep (TimeSpan.FromSeconds(0.5));
- Console.WriteLine ("El thread `{0}` imprime {1}",
- Thread.CurrentThread.Name,
- i.ToString()
- );
- }
- }
- // Imprime un número en la salida estándar:
- private static void ImprimirNumero(int numero)
- {
- Console.WriteLine (numero.ToString());
- }
- public static void Main()
- {
- Console.Title = "Pasar Parámetros a un Thread";
- Console.WriteLine ();
- // Creación de instancia de la clase UtilitarioThread:
- UtilitarioThread ut = new UtilitarioThread(10);
- Console.WriteLine ("=== Uso de Thread.Start() ===");
- Thread t1 = new Thread (ut.ContarNumeros);
- t1.Name = "Thread No. 1";
- t1.Start();
- t1.Join ();
- Console.WriteLine ("\n=== Uso de Thread.Start(Object) ===");
- Thread t2 = new Thread (new ParameterizedThreadStart(Contar));
- t2.Name = "Thread No. 2";
- t2.Start (8);
- t2.Join();
- Console.WriteLine ("\n=== Uso de Expresión Lambda (1)===");
- Thread t3 = new Thread (() => ContarNumeros(12));
- t3.Name = "Thread No. 3";
- t3.Start();
- t3.Join();
- Console.WriteLine ("\n=== Uso de Expresión Lambda (2)===");
- int numero = 11;
- Thread t4 = new Thread(() => ImprimirNumero(numero));
- numero = 13;
- Thread t5 = new Thread(() => ImprimirNumero(numero));
- t4.Start();
- t5.Start();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement