Пример #1
0
        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)
            {
            }
        }
Пример #2
0
        /// <inheritdoc />
        public void StopMonitoring()
        {
            if (periodic_ != null)
            {
                periodic_.Dispose();
                periodic_ = null;
            }

            ResetState_();
        }
Пример #3
0
 public void Dispose()
 {
     if (_disposed)
     {
         return;
     }
     _timer?.Dispose();
     if (IsAcquired)
     {
         TryReleaseLock();
         IsAcquired = false;
     }
     _disposed = true;
 }
Пример #4
0
        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());
        }