public void Dispose() { var d = false; var f = false; var o = new JavaDisposedObject(() => d = true, () => f = true); o.Dispose(); Assert.IsTrue(d); Assert.IsFalse(f); }
public void Dispose_Finalized() { var d = false; var f = false; FinalizerHelpers.PerformNoPinAction(() => { FinalizerHelpers.PerformNoPinAction(() => { var v = new JavaDisposedObject(() => d = true, () => f = true); GC.KeepAlive(v); }); JniEnvironment.Runtime.ValueManager.CollectPeers(); }); JniEnvironment.Runtime.ValueManager.CollectPeers(); GC.WaitForPendingFinalizers(); Assert.IsFalse(d); Assert.IsTrue(f); }
public void Dispose_Finalized() { var d = false; var f = false; var t = new Thread(() => { var v = new JavaDisposedObject(() => d = true, () => f = true); GC.KeepAlive(v); }); t.Start(); t.Join(); JniEnvironment.Runtime.ValueManager.CollectPeers(); GC.WaitForPendingFinalizers(); JniEnvironment.Runtime.ValueManager.CollectPeers(); GC.WaitForPendingFinalizers(); Assert.IsFalse(d); Assert.IsTrue(f); }