protected override Yield Stop(Result result) { _expirationEntries.Dispose(); _expirationEntries.EntryExpired -= OnDelete; _expirationEntries = null; _path = null; yield return(Coroutine.Invoke(base.Stop, new Result())); result.Return(); }
public void Can_dispose_set() { var expired = new ManualResetEvent(false); var changed = new ManualResetEvent(false); var i = 42; var ttl = TimeSpan.FromSeconds(1); ExpiringHashSet <int> .Entry entry = null; var set = new ExpiringHashSet <int>(TaskTimerFactory.Current); set.EntryExpired += (s, e) => { entry = e.Entry; expired.Set(); }; set.CollectionChanged += (s, e) => changed.Set(); set.SetExpiration(i, ttl); set.Dispose(); Assert.IsTrue(changed.WaitOne(2000)); Assert.IsFalse(expired.WaitOne(2000)); }
public void Disposing_set_expires_all_items_before_dispose_returns_but_does_not_trigger_collection_changed() { var expired = false; var changed = false; var expiredEntries = new List <int>(); var ttl = TimeSpan.FromSeconds(1); var set = new ExpiringHashSet <int>(TaskTimerFactory.Current); set.EntryExpired += (s, e) => { expiredEntries.Add(e.Entry.Value); expired = true; }; set.CollectionChanged += (s, e) => { changed = true; }; set.SetOrUpdate(12, ttl); set.SetOrUpdate(21, ttl); Assert.IsFalse(expired, "expired was triggered"); Assert.IsTrue(changed, "changed wasn't triggered"); changed = false; set.Dispose(); Assert.IsFalse(changed, "changed was triggered"); Assert.IsTrue(expired, "expired wasn't triggered"); Assert.AreEqual(new[] { 12, 21 }, expiredEntries.OrderBy(x => x).ToArray()); }
/// <summary> /// See <see cref="IDisposable.Dispose"/>. /// </summary> public void Dispose() { _expirationEntries.EntryExpired -= OnDelete; _expirationEntries.Dispose(); }
public void Can_dispose_set() { var expired = new ManualResetEvent(false); var changed = new ManualResetEvent(false); var i = 42; var ttl = TimeSpan.FromSeconds(1); ExpiringHashSet<int>.Entry entry = null; var set = new ExpiringHashSet<int>(TaskTimerFactory.Current); set.EntryExpired += (s, e) => { entry = e.Entry; expired.Set(); }; set.CollectionChanged += (s, e) => changed.Set(); set.SetExpiration(i, ttl); set.Dispose(); Assert.IsTrue(changed.WaitOne(2000)); Assert.IsFalse(expired.WaitOne(2000)); }
public void Disposing_set_expires_all_items_before_dispose_returns_but_does_not_trigger_collection_changed() { var expired = false; var changed = false; var expiredEntries = new List<int>(); var ttl = TimeSpan.FromSeconds(1); var set = new ExpiringHashSet<int>(TaskTimerFactory.Current); set.EntryExpired += (s, e) => { expiredEntries.Add(e.Entry.Value); expired = true; }; set.CollectionChanged += (s, e) => { changed = true; }; set.SetExpiration(12, ttl); set.SetExpiration(21, ttl); Assert.IsFalse(expired, "expired was triggered"); Assert.IsTrue(changed, "changed wasn't triggered"); changed = false; set.Dispose(); Assert.IsFalse(changed,"changed was triggered"); Assert.IsTrue(expired, "expired wasn't triggered"); Assert.AreEqual(new[] { 12, 21 },expiredEntries.OrderBy(x =>x).ToArray()); }
public void Dispose() { _expirations.EntryExpired -= OnExpiration; _expirations.Dispose(); }