Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Threading;
- namespace Recetas.Multithreading.R0306
- {
- public class EjecucionPeriodicaMetodoAsincronico
- {
- public static Timer _temporizador;
- public static void Main()
- {
- Console.WriteLine ();
- // Anuncio de finalización ejecución:
- Console.WriteLine ("Presione la tecla Enter para detener el temporizador...\n");
- // Tiempo de inicio de ejecución:
- DateTime inicioEjecucion = DateTime.Now;
- // Instancia un nuevo objeto Timer con inicio retardado de 1 segundo y
- // periodicidad de 2 segundos:
- _temporizador = new Timer(_ => OperacionTemporizada(inicioEjecucion), null,
- TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2));
- // Detiene el thread de `Main` durante 6 segundos:
- Thread.Sleep(TimeSpan.FromSeconds(6));
- // Cambia la periodicidad de ejecución del método `OperacionTemporizada`:
- _temporizador.Change(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(4));
- Console.ReadLine ();
- // Invocación explícita para eliminación de recursos del objeto Timer:
- _temporizador.Dispose();
- }
- public static void OperacionTemporizada(DateTime inicioEjecucion)
- {
- // Computa el tiempo de ejecución:
- TimeSpan duracion = DateTime.Now - inicioEjecucion;
- // Mensaje de estado de ejecución de este método:
- Console.WriteLine ("{0} segundos transcurridos a partir de {1}. ID de thread: {2}",
- duracion.Seconds, inicioEjecucion,
- Thread.CurrentThread.ManagedThreadId);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement