public void WithFutureDate_WaitUntilDate() { var futureDate = DateTime.UtcNow.AddSeconds(1); ExclusiveTimer.WaitUntil(futureDate); Assert.Greater(DateTime.UtcNow, futureDate); }
public void WithTimeSpan_WaitThatTime() { var timeSpan = TimeSpan.FromSeconds(1); var futureDate = DateTime.UtcNow.Add(timeSpan); ExclusiveTimer.Wait(timeSpan); Assert.Greater(DateTime.UtcNow, futureDate); }
/// <summary> /// Initializes a new instance of the <see cref="FileLogger"/> class. /// </summary> /// <param name="path">The path.</param> /// <param name="dailyFile">if set to <c>true</c> [daily file].</param> public FileLogger(string path, bool dailyFile) { LogPath = path; DailyFile = dailyFile; _timer = new ExclusiveTimer( async() => await WriteLogEntries().ConfigureAwait(false), TimeSpan.Zero, TimeSpan.FromSeconds(5)); }
public void WithDefaultTimer_WaitsForOneIteration() { var i = 0; using (var timer = new ExclusiveTimer(() => i++, 0, 100)) { Thread.Sleep(130); Assert.GreaterOrEqual(i, 1, "First iteration"); Thread.Sleep(120); Assert.GreaterOrEqual(i, 2, "Second iteration"); } }
/// <summary> /// Initializes static members of the <see cref="Terminal"/> class. /// </summary> static Terminal() { lock (SyncLock) { if (DequeueOutputTimer != null) { return; } if (IsConsolePresent) { Console.CursorVisible = false; } // Here we start the output task, fire-and-forget DequeueOutputTimer = new ExclusiveTimer(DequeueOutputCycle); DequeueOutputTimer.Resume(OutputFlushInterval); } }