示例#1
0
        protected override void Dispose(bool disposing)
        {
            if (!Monitor.IsEntered(_disposeLock))
            {
                return;
            }

            try
            {
                if (disposing && !_disposed)
                {
                    _disposed = true;

                    if (!CancelationToken.IsCancellationRequested)
                    {
                        CancelationToken.Cancel();
                    }
                }
                base.Dispose(disposing);
            }
            finally
            {
                Monitor.Exit(_disposeLock);
            }
        }
            public void NewCancelationTokenNoCancelationRequested()
            {
                CancelationToken cancelationToken = new CancelationToken();

                Assert.IsFalse(cancelationToken.IsCancelationRequested);

                TestHelper.Cleanup();
            }
            public void NewCancelationTokenCannotBeCanceled()
            {
                CancelationToken cancelationToken = new CancelationToken();

                Assert.IsFalse(cancelationToken.CanBeCanceled);

                TestHelper.Cleanup();
            }
示例#4
0
        public void Stop()
        {
            CancelationToken.Cancel();

            foreach (var i in Connections)
            {
                i.Value.Stop();
            }
        }
            public void CancelationTokenFromSourceCannotBeCanceledAfterSourceIsDisposed()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;

                cancelationSource.Dispose();
                Assert.IsFalse(cancelationToken.CanBeCanceled);

                TestHelper.Cleanup();
            }
            public void CancelationTokenFromSourceCanBeCanceled()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;

                Assert.IsTrue(cancelationToken.CanBeCanceled);
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
            public void CancelationTokenNoCancelationRequestedBeforeCanceled()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;

                Assert.IsFalse(cancelationToken.IsCancelationRequested);
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
            public void CancelationTokenValueTypeIsNull0()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;

                cancelationSource.Cancel();
                Assert.IsNull(cancelationToken.CancelationValueType);
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
            public void CancelationTokenFromSourceCancelationIsNotRequestedAfterSourceIsDisposed1()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;

                cancelationSource.Cancel("Cancel");
                cancelationSource.Dispose();
                Assert.IsFalse(cancelationToken.IsCancelationRequested);

                TestHelper.Cleanup();
            }
示例#10
0
            public void CancelationTokenFromSourceCancelationIsRequested0()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;

                cancelationSource.Cancel();
                Assert.IsTrue(cancelationToken.IsCancelationRequested);
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
示例#11
0
            public void RegistrationFromCancelationTokenIsRegistered0()
            {
                CancelationSource       cancelationSource       = CancelationSource.New();
                CancelationToken        cancelationToken        = cancelationSource.Token;
                CancelationRegistration cancelationRegistration = cancelationToken.Register(_ => { });

                Assert.IsTrue(cancelationRegistration.IsRegistered);
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
示例#12
0
            public void CancelationTokenCancelationRequestedAfterCanceled1()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;

                cancelationSource.Cancel("Canceled");
                Assert.IsTrue(cancelationToken.IsCancelationRequested);
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
示例#13
0
            public void CancelationTokenValueTypeIsString()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;

                cancelationSource.Cancel("Cancel");
                Assert.IsTrue(cancelationToken.CancelationValueType == typeof(string));
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
示例#14
0
            public void RegistrationFromCancelationTokenIsNotRegisteredAfterSourceIsDisposed1()
            {
                CancelationSource       cancelationSource       = CancelationSource.New();
                CancelationToken        cancelationToken        = cancelationSource.Token;
                CancelationRegistration cancelationRegistration = cancelationToken.Register(0, (i, _) => { });

                cancelationSource.Dispose();
                Assert.IsFalse(cancelationRegistration.IsRegistered);

                TestHelper.Cleanup();
            }
示例#15
0
            public void CancelationTokenValueIsNull1()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;

                cancelationSource.Cancel(default(string));
                Assert.IsNull(cancelationToken.CancelationValue);
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
示例#16
0
            public void CancelationTokenValueMatchesCancelValue()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;
                string            cancelValue       = "Cancel";

                cancelationSource.Cancel(cancelValue);
                Assert.AreEqual(cancelValue, cancelationToken.CancelationValue);
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
示例#17
0
            public void CancelationTokenRegisterCaptureVariableMatches()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;
                string            expected          = "Captured";

                cancelationToken.Register(expected, (cv, _) => Assert.AreEqual(expected, cv));
                cancelationSource.Cancel();
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
示例#18
0
 private static void CheckCancelationToken()
 {
     try
     {
         CancelationToken.Dispose();
         CancelationToken = new CancellationTokenSource();
     }
     catch (ObjectDisposedException)
     {
         CancelationToken = new CancellationTokenSource();
     }
 }
示例#19
0
    public async Task <HttpResponseMessage> GetAsync(string url, CancelationToken token)
    {
        var combinedCts = CancellationTokenSource.CreateLinkedTokenSource(token, _disposeCts.Token);
        var tokenToUse  = combinedCts.Token;

        //... snipped code
        //Some spot where it would good to check if we have canceled yet.
        tokenToUse.ThrowIfCancellationRequested();
        //... More snipped code;

        return(result);
    }
示例#20
0
 private Deferred(CancelationToken cancelationToken)
 {
     if (cancelationToken.CanBeCanceled)
     {
         _promise = InternalProtected.DeferredPromiseCancelVoid.GetOrCreate(cancelationToken);
     }
     else
     {
         _promise = InternalProtected.DeferredPromiseVoid.GetOrCreate();
     }
     _id = _promise.Id;
 }
示例#21
0
            public void RegistrationFromCancelationTokenIsNotRegisteredAfterInvoked3()
            {
                CancelationSource       cancelationSource       = CancelationSource.New();
                CancelationToken        cancelationToken        = cancelationSource.Token;
                CancelationRegistration cancelationRegistration = new CancelationRegistration();

                cancelationRegistration = cancelationToken.Register(0, (i, _) => Assert.IsFalse(cancelationRegistration.IsRegistered));
                cancelationSource.Cancel();
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
示例#22
0
            public void RetainedCancelationTokenFromSourceCanBeCanceledAfterSourceIsDisposed()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;

                cancelationToken.Retain();
                cancelationSource.Dispose();
                Assert.IsTrue(cancelationToken.CanBeCanceled);
                cancelationToken.Release();

                TestHelper.Cleanup();
            }
示例#23
0
            public void CancelationTokenRegisterCallbackIsInvoked3()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;
                bool invoked = false;

                cancelationToken.Register(0, (i, _) => invoked = true);
                cancelationSource.Cancel("Cancel");
                Assert.IsTrue(invoked);
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
示例#24
0
            public void CancelationTokenNullValueCannotBeGottenAsString1()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;

                cancelationSource.Cancel(default(string));
                string val;

                Assert.IsFalse(cancelationToken.TryGetCancelationValueAs(out val));
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
示例#25
0
            public void CancelationTokenStringValueCanBeGottenAsString()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;

                cancelationSource.Cancel("Cancel");
                string val;

                Assert.IsTrue(cancelationToken.TryGetCancelationValueAs(out val));
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
示例#26
0
        public override void Close()
        {
            if (_closed)
            {
                return;
            }

            _closed = true;
            CancelationToken.Dispose();
            TickScheduler.Close();
            base.Close();

            //OpenAPI.LevelManager.UnloadLevel(this);
        }
示例#27
0
            public void RegisteredCallbacksAreInvokedAfterSourceIsDisposed()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;
                bool invoked = false;

                // This should never be done in practice!
                cancelationToken.Register(_ => cancelationSource.Dispose());
                cancelationToken.Register(_ => invoked = true);
                cancelationSource.Cancel();
                Assert.IsTrue(invoked);

                TestHelper.Cleanup();
            }
示例#28
0
            public void RegisteredCallbackExceptionPropagatesToCancelCaller()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;

                cancelationToken.Register(_ =>
                {
                    throw new Exception();
                });
                Assert.Throws <AggregateException>(cancelationSource.Cancel);
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
示例#29
0
            public void CancelationRegistrationUnregisterCallbackIsNotInvoked0()
            {
                CancelationSource cancelationSource = CancelationSource.New();
                CancelationToken  cancelationToken  = cancelationSource.Token;
                bool invoked = false;
                CancelationRegistration cancelationRegistration = cancelationToken.Register(_ => invoked = true);

                cancelationRegistration.Unregister();
                cancelationSource.Cancel();
                Assert.IsFalse(invoked);
                cancelationSource.Dispose();

                TestHelper.Cleanup();
            }
示例#30
0
            public void CancelationTokenInvalidOperations()
            {
                CancelationToken cancelationToken = new CancelationToken();

                Assert.Throws <InvalidOperationException>(() => { var _ = cancelationToken.CancelationValue; });
                Assert.Throws <InvalidOperationException>(() => { var _ = cancelationToken.CancelationValueType; });
                Assert.Throws <InvalidOperationException>(() => { cancelationToken.Register(_ => { }); });
                Assert.Throws <InvalidOperationException>(() => { cancelationToken.Register(1, (i, _) => { }); });
                Assert.Throws <InvalidOperationException>(() => { string _; cancelationToken.TryGetCancelationValueAs(out _); });
                Assert.Throws <InvalidOperationException>(cancelationToken.Retain);
                Assert.Throws <InvalidOperationException>(cancelationToken.Release);

                TestHelper.Cleanup();
            }