Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. using System;
  2. using System.Threading;
  3.  
  4. namespace Recetas.Cap04
  5. {
  6.     public sealed class ControlEjecucionPeriodica
  7.     {
  8.         public static void Main()
  9.         {
  10.             // Texto de estado:
  11.             string mensajeEstado = "Temporizador Expiró.";
  12.            
  13.             Console.WriteLine ("\nCreación de instancia Timer a las {0}.", DateTime.Now.ToString ("HH:mm:ss.ffff"));
  14.            
  15.             // Creación de Timer con método que se ejecuta cada un segundo:
  16.             using
  17.             (    
  18.                 Timer t = new Timer ( delegate (object s)
  19.                 {
  20.                     Console.WriteLine ("{0} : {1}", DateTime.Now.ToString ("HH:mm:ss.ffff"), s);
  21.                 }, mensajeEstado, 2000, 1000 )
  22.             )
  23.             {
  24.                 int periodo;
  25.                
  26.                
  27.                 // Lee el valor ingresado por el usuario. En caso de ser cero se detiene la ejecución.
  28.                 // Cualquier valor inválido cancela la ejecución periódica:
  29.                 do
  30.                 {
  31.                     try
  32.                     {
  33.                         periodo = Int32.Parse (Console.ReadLine ());
  34.                     }
  35.                     catch (FormatException)
  36.                     {
  37.                         periodo = 0;
  38.                     }
  39.                    
  40.                     // Cambia el intervalo de ejecución del método:
  41.                     if (periodo > 0)
  42.                     {
  43.                         t.Change (0, periodo);
  44.                     }
  45.                 } while (periodo > 0);
  46.             }
  47.            
  48.             Console.WriteLine ();
  49.         }
  50.     }
  51. }