using System.Timers; namespace TarifasANEEL.Utilities { public static class TimerHelper { static DateTime dtTimerEndTime; static void SetTimerEndTime(DateTime date) => dtTimerEndTime = date; static void WhileTimerRuns(object sender, ElapsedEventArgs e) { Console.Write($"\rEncerrando em {dtTimerEndTime.Subtract(e.SignalTime).Seconds}"); } public static void SetTimer(int durationInSeconds) { var vTimer = new System.Timers.Timer(100); double dRemainingTime; SetTimerEndTime(DateTime.Now.AddSeconds(durationInSeconds)); vTimer.Elapsed += WhileTimerRuns!; vTimer.AutoReset = true; vTimer.Enabled = true; Console.WriteLine(""); Console.WriteLine("Pressione qualquer tecla para encerrar o programa..."); Console.WriteLine(""); Task.Factory.StartNew( () => { Console.ReadKey(); dRemainingTime = DateTime.Now.Subtract(dtTimerEndTime).TotalSeconds; } ).Wait( TimeSpan.FromSeconds(durationInSeconds) ); } private static void OnTimedEvent(object? source, ElapsedEventArgs e) { Console.WriteLine("Encerrando o aplicativo."); Environment.Exit(0); } } }