public void ShouldFailOnDoubleDisposeOfAction() { VirtualClock clock = new VirtualClock(); PeriodicAction action = clock.CreateAction(TimeSpan.FromSeconds(1.0d), () => { }); action.Dispose(); try { action.Dispose(); Assert.Fail("Expected exception was not thrown."); } catch (InvalidOperationException) { } }
/// <inheritdoc /> public void StopMonitoring() { if (periodic_ != null) { periodic_.Dispose(); periodic_ = null; } ResetState_(); }
public void Dispose() { if (_disposed) { return; } _timer?.Dispose(); if (IsAcquired) { TryReleaseLock(); IsAcquired = false; } _disposed = true; }
public void ShouldNotInvokeRemovedAction() { VirtualClock clock = new VirtualClock(); TimeSpan interval1 = TimeSpan.FromSeconds(2.0d); TimeSpan interval2 = TimeSpan.FromSeconds(4.0d); List <string> invocations = new List <string>(); clock.Sleep(TimeSpan.FromTicks(interval1.Ticks / 2)); PeriodicAction action1 = clock.CreateAction(interval1, () => invocations.Add("A")); clock.Sleep(TimeSpan.FromTicks(interval1.Ticks / 2)); PeriodicAction action2 = clock.CreateAction(interval2, () => invocations.Add("B")); CollectionAssert.AreEqual(new string[0], invocations.ToArray()); action1.Dispose(); clock.Sleep(interval1 + interval2); CollectionAssert.AreEqual(new string[] { "B" }, invocations.ToArray()); }