Timer Срабатывание события Tick - C#
Формулировка задачи:
Подскажите пожалуйста, каждое следующее событие Tick будет срабатывать с учетом времени работы предыдущего тика или же ровно по времени будет исполняться?
Решение задачи: «Timer Срабатывание события Tick»
textual
Листинг программы
private static System.Timers.Timer aTimer;
private static DateTime startTime;
private static int desiredInterval;
private static int ticks;
public static void Main()
{
SetTimer();
Console.WriteLine("\nPress the Enter key to exit the application...\n");
Console.WriteLine("The application started at {0:HH:mm:ss.fff}", DateTime.Now);
Console.ReadLine();
aTimer.Stop();
aTimer.Dispose();
Console.WriteLine("Terminating the application...");
}
private static void SetTimer()
{
// Create a timer with a two second interval.
startTime = DateTime.Now;
desiredInterval = 2000;
aTimer = new System.Timers.Timer(desiredInterval);
ticks = 0;
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += OnTimedEvent;
aTimer.AutoReset = true;
aTimer.Enabled = true;
}
private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
Console.WriteLine("The Elapsed event was raised at {0:HH:mm:ss.fff}",
e.SignalTime);
ticks++;
var desiredTime = startTime.AddMilliseconds((ticks + 1) * desiredInterval);
var interval = (desiredTime - DateTime.Now).TotalMilliseconds;
aTimer.Interval = interval;
}