public void DisposeInAsync() { int i = 0; // This tests that ContextDisposable.Dispose() is not done in async mode. var d = new ContextDisposable (new SynchronizationContext (), Disposable.Create (() => { Thread.Sleep (200); i++; })); d.Dispose (); Assert.IsTrue (d.IsDisposed, "#1"); Assert.AreEqual (0, i, "#2"); // not (very likely) yet Assert.IsTrue (SpinWait.SpinUntil (() => i != 0, 1000), "#3"); }
public void ContextDisposable() { var disp = false; var m = new MySync(); var c = new ContextDisposable(m, Disposable.Create(() => { disp = true; })); Assert.AreSame(m, c.Context); Assert.IsFalse(m._disposed); Assert.IsFalse(disp); c.Dispose(); Assert.IsTrue(c.IsDisposed); Assert.IsTrue(m._disposed); Assert.IsTrue(disp); }