public static void Main()
DateTime startDateTime = DateTime.Now;
DateTime endDateTime = startDateTime.AddSeconds(5);
Thread workerThread = new Thread(DoRecord) { IsBackground = true };
while (DateTime.Now < endDateTime)
Console.WriteLine("Finished at " + DateTime.Now.ToString("HH:mm:ss.fff tt"));
private static void DoRecord()
long ticksBetweenFrames = TimeSpan.FromSeconds(0.04).Ticks;
int screenShotsTaken = 0;
DateTime startDateTime = DateTime.Now;
while (!_manualResetEvent.WaitOne(0))
Console.WriteLine($"Took screenshot at " + DateTime.Now.ToString("HH:mm:ss.fff tt"));
while (DateTime.Now.Ticks < (startDateTime.AddTicks(ticksBetweenFrames * screenShotsTaken).Ticks))
private static ManualResetEvent _manualResetEvent = new ManualResetEvent(false);