示例#1
0
        public void BooleanDisposable()
        {
            var d = new BooleanDisposable();

            Assert.False(d.IsDisposed);
            d.Dispose();
            Assert.True(d.IsDisposed);
            d.Dispose();
            Assert.True(d.IsDisposed);
        }
        public void DisposeSimple()
        {
            var b = new BooleanDisposable();

            Assert.IsFalse(b.IsDisposed, "#1");
            b.Dispose();
            Assert.IsTrue(b.IsDisposed, "#2");
            b.Dispose();              // call multiple time
            Assert.IsTrue(b.IsDisposed, "#2");
        }
示例#3
0
            IEnumerator OnCompletedDelay()
            {
                var frameCount = parent.frameCount;

                while (!coroutineKey.IsDisposed && frameCount-- != 0)
                {
                    yield return(yieldInstruction);
                }
                if (!coroutineKey.IsDisposed)
                {
                    coroutineKey.Dispose();

                    try { observer.OnCompleted(); }
                    finally { Dispose(); }
                }
            }
        public void Boolean()
        {
            var bd = new BooleanDisposable();

            bd.IsDisposed.IsFalse();
            bd.Dispose();
            bd.IsDisposed.IsTrue();
        }
示例#5
0
        /// <summary>
        /// BooleanDisposable 只是封装了一下布尔值,调用完 Dispose,IsDisposed 会为 True
        /// </summary>
        public static void BoolDisposable()
        {
            var boolDisposable = new BooleanDisposable();

            Console.WriteLine($"Before, IsDisposed = {boolDisposable.IsDisposed}");
            boolDisposable.Dispose();
            Console.WriteLine($"After, IsDisposed = {boolDisposable.IsDisposed}");
        }
 internal void Invoke()
 {
     if (!disposable.IsDisposed)
     {
         action?.Invoke();
         disposable.Dispose();
     }
 }
示例#7
0
        public void Dispose()
        {
            if (cancelDisposable != null)
            {
                cancelDisposable.Dispose();
            }

            GC.SuppressFinalize(this);
        }
示例#8
0
        private static void BooleanDisposable()
        {
            Demo.DisplayHeader("The BooleanDispoable - sets a boolean flag upon disposal");

            var booleanDisposable = new BooleanDisposable();

            Console.WriteLine("Before dispose, booleanDisposable.IsDisposed = {0}", booleanDisposable.IsDisposed);
            booleanDisposable.Dispose();
            Console.WriteLine("After dispose, booleanDisposable.IsDisposed = {0}", booleanDisposable.IsDisposed);
        }
示例#9
0
 protected virtual void Dispose(bool disposing)
 {
     if (!disposable.IsDisposed)
     {
         if (disposing)
         {
             container.Dispose();
         }
         disposable.Dispose();
     }
 }
        public void BooleanDisposable_Test()
        {
            // arrange
            var disp = new BooleanDisposable();

            // act & verify

            Assert.IsFalse(disp.IsDisposed);
            disp.Dispose();
            Assert.IsTrue(disp.IsDisposed);
        }
示例#11
0
        public static void BooleanDisposable_HasAFlagSetToTrue_AfterItHasBeenDisposed()
        {
            var booleanDisposable = new BooleanDisposable();

            if (!booleanDisposable.IsDisposed)
            {
                Console.WriteLine("Disposing");
                booleanDisposable.Dispose();
            }

            if (booleanDisposable.IsDisposed)
            {
                Console.WriteLine("Succesfully Disposed");
            }
        }
示例#12
0
            IEnumerator DrainQueue(Queue <T> q, int frameCount)
            {
                lock (gate)
                {
                    readyDrainEnumerator = false; // use next queue.
                    running = false;
                }

                while (!cancelationToken.IsDisposed && frameCount-- != 0)
                {
                    yield return(null);
                }

                try
                {
                    if (q != null)
                    {
                        while (q.Count > 0 && !hasError)
                        {
                            if (cancelationToken.IsDisposed)
                            {
                                break;
                            }

                            lock (gate)
                            {
                                running = true;
                            }

                            var value = q.Dequeue();
                            observer.OnNext(value);

                            lock (gate)
                            {
                                running = false;
                            }
                        }

                        if (q.Count == 0)
                        {
                            pool.Return(q);
                        }
                    }

                    if (hasError)
                    {
                        if (!cancelationToken.IsDisposed)
                        {
                            cancelationToken.Dispose();

                            try { observer.OnError(error); } finally { Dispose(); }
                        }
                    }
                    else if (calledCompleted)
                    {
                        lock (gate)
                        {
                            // not self only
                            if (runningEnumeratorCount != 1)
                            {
                                yield break;
                            }
                        }

                        if (!cancelationToken.IsDisposed)
                        {
                            cancelationToken.Dispose();

                            try { observer.OnCompleted(); }
                            finally { Dispose(); }
                        }
                    }
                }
                finally
                {
                    lock (gate)
                    {
                        runningEnumeratorCount--;
                    }
                }
            }
示例#13
0
文件: UnitTests.cs 项目: ragcat/UniRx
 public void Boolean()
 {
     var bd = new BooleanDisposable();
     bd.IsDisposed.IsFalse();
     bd.Dispose();
     bd.IsDisposed.IsTrue();
 }
示例#14
0
 public void Dispose()
 {
     _disposable.Dispose();
     _pipe.Dispose();
 }
示例#15
0
 /// <summary>
 /// 释放时
 /// </summary>
 public void Dispose()
 {
     disposable.Dispose();
 }