示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }