Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Threading;
- namespace Recetas.CSharp.Cap04.R0406
- {
- class DatosThreadStart
- {
- // Campos y propiedades:
- private readonly int iteraciones;
- private readonly string mensaje;
- private readonly int retraso;
- public int Iteraciones
- {
- get
- {
- return iteraciones;
- }
- }
- public string Mensaje
- {
- get
- {
- return mensaje;
- }
- }
- public int Retraso
- {
- get
- {
- return retraso;
- }
- }
- // constructor:
- public DatosThreadStart (int iteraciones, string mensaje, int retraso)
- {
- this.iteraciones = iteraciones;
- this.mensaje = mensaje;
- this.retraso = retraso;
- }
- }
- public sealed class MetodoEnNuevoThread
- {
- public static void Main()
- {
- // Crea un nuevo Thread para ejecutar el método
- // MostrarMensaje:
- Thread threadNuevo = new Thread(
- new ParameterizedThreadStart ( MostrarMensaje)
- );
- // Este thread se ejecuta en primer plano:
- threadNuevo.IsBackground = false;
- // Creación de instancia DatosThreadStart para
- // configuración del nuevo thread:
- DatosThreadStart configuracion =
- new DatosThreadStart (5, "Thread nuevo en ejecución.", 500);
- VisorMensajesThread ("Inicio de un nuevo thread.");
- // Inicia la ejecución del nuevo thread:
- threadNuevo.Start (configuracion);
- // Main continua con otras tareas:
- for (int i = 0; i < 13; ++i)
- {
- VisorMensajesThread ("El thread Main continua su ejecución.");
- Thread.Sleep (200);
- }
- Console.WriteLine ("\nLa ejecución de Main ha terminado. Presione Enter.");
- Console.ReadLine ();
- }
- // Este método presenta información en pantalla
- // de acuerdo a la configuración de ejecución
- // representada en un objeto de clase DatosThreadStart:
- private static void MostrarMensaje(object configuracion)
- {
- DatosThreadStart datos = configuracion as DatosThreadStart;
- if (datos != null)
- {
- for (int i = 0; i < datos.Iteraciones; ++i)
- {
- VisorMensajesThread(datos.Mensaje);
- // Suspende (pausa) el thread por un período específico:
- Thread.Sleep (datos.Retraso);
- }
- }
- }
- // Método para la visualización de información
- // del estado actual de un thread:
- private static void VisorMensajesThread(string mensaje)
- {
- Console.WriteLine ("[{0,3}] - {1} : {2}",
- Thread.CurrentThread.ManagedThreadId,
- DateTime.Now.ToString ("HH:mm:ss.ffff"), mensaje);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement