コード例 #1
0
        public void Test_TryDispose_concurrency()
        {
            foreach (var round in Enumerable.Range(0, 1000))
            {
                var d1 = new SensitiveDisposable();
                var d2 = new SensitiveDisposable();
                var d  = ImmutableCompositeDisposable.Create(d1, d2);

                BooleanDisposableTestHelper.TestTryDisposeExecuteAtMostOnce(d);

                d1.IsDisposed.Is(true);
                d2.IsDisposed.Is(true);
            }
        }
コード例 #2
0
        public void Test_TryDispose()
        {
            var d1 = new SensitiveDisposable();
            var d2 = new SensitiveDisposable();
            var d  = ImmutableCompositeDisposable.Create(d1, d2);

            d.IsDisposed.Is(false);

            d.TryDispose().Is(true);
            d.IsDisposed.Is(true);
            d1.IsDisposed.Is(true);
            d2.IsDisposed.Is(true);

            d.TryDispose().Is(false);
        }
コード例 #3
0
        public void Test_variadic()
        {
            var d1 = new SensitiveDisposable();
            var d2 = new SensitiveDisposable();
            var d3 = new SensitiveDisposable();
            var d4 = new SensitiveDisposable();
            var d5 = new SensitiveDisposable();
            var d6 = new SensitiveDisposable();
            var it = ImmutableCompositeDisposable.Create(d1, d2, d3, d4, d5, d6);

            it.IsDisposed.Is(false);

            it.TryDispose().Is(true);
            new[] { d1, d2, d3, d4, d5, d6 }.All(d => d.IsDisposed).Is(true);
        }