Advertisement
Fhernd

EjecucionPeriodicaMetodoAsincronico.cs

Mar 21st, 2016
1,560
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.93 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3.  
  4. namespace Recetas.Multithreading.R0306
  5. {
  6.     public class EjecucionPeriodicaMetodoAsincronico
  7.     {
  8.         public static Timer _temporizador;
  9.        
  10.         public static void Main()
  11.         {
  12.             Console.WriteLine ();
  13.            
  14.             // Anuncio de finalización ejecución:
  15.             Console.WriteLine ("Presione la tecla Enter para detener el temporizador...\n");
  16.            
  17.             // Tiempo de inicio de ejecución:
  18.             DateTime inicioEjecucion = DateTime.Now;
  19.            
  20.             // Instancia un nuevo objeto Timer con inicio retardado de 1 segundo y
  21.             // periodicidad de 2 segundos:
  22.             _temporizador = new Timer(_ => OperacionTemporizada(inicioEjecucion), null,
  23.                                     TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2));
  24.                                    
  25.             // Detiene el thread de `Main` durante 6 segundos:
  26.             Thread.Sleep(TimeSpan.FromSeconds(6));
  27.            
  28.             // Cambia la periodicidad de ejecución del método `OperacionTemporizada`:
  29.             _temporizador.Change(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(4));
  30.            
  31.             Console.ReadLine ();
  32.            
  33.             // Invocación explícita para eliminación de recursos del objeto Timer:
  34.             _temporizador.Dispose();
  35.         }
  36.        
  37.         public static void OperacionTemporizada(DateTime inicioEjecucion)
  38.         {
  39.             // Computa el tiempo de ejecución:
  40.             TimeSpan duracion = DateTime.Now - inicioEjecucion;
  41.            
  42.             // Mensaje de estado de ejecución de este método:
  43.             Console.WriteLine ("{0} segundos transcurridos a partir de {1}. ID de thread: {2}",
  44.                                     duracion.Seconds, inicioEjecucion,
  45.                                     Thread.CurrentThread.ManagedThreadId);
  46.         }
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement