| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.#if !NO_TPLusing System.Threading;namespace System.Reactive.Disposables{    /// <summary>    /// Represents a disposable resource that has an associated <seealso cref="T:System.Threading.CancellationToken"/> that will be set to the cancellation requested state upon disposal.    /// </summary>    public sealed class CancellationDisposable : ICancelable    {        private readonly CancellationTokenSource _cts;        /// <summary>        /// Initializes a new instance of the <see cref="T:System.Reactive.Disposables.CancellationDisposable"/> class that uses an existing <seealso cref="T:System.Threading.CancellationTokenSource"/>.        /// </summary>        /// <param name="cts"><seealso cref="T:System.Threading.CancellationTokenSource"/> used for cancellation.</param>        /// <exception cref="ArgumentNullException"><paramref name="cts"/> is null.</exception>        public CancellationDisposable(CancellationTokenSource cts)        {            if (cts == null)                throw new ArgumentNullException("cts");            _cts = cts;        }        /// <summary>        /// Initializes a new instance of the <see cref="T:System.Reactive.Disposables.CancellationDisposable"/> class that uses a new <seealso cref="T:System.Threading.CancellationTokenSource"/>.        /// </summary>        public CancellationDisposable()            : this(new CancellationTokenSource())        {        }        /// <summary>        /// Gets the <see cref="T:System.Threading.CancellationToken"/> used by this CancellationDisposable.        /// </summary>        public CancellationToken Token        {            get { return _cts.Token; }        }        /// <summary>        /// Cancels the underlying <seealso cref="T:System.Threading.CancellationTokenSource"/>.        /// </summary>        public void Dispose()        {            _cts.Cancel();        }        /// <summary>        /// Gets a value that indicates whether the object is disposed.        /// </summary>        public bool IsDisposed        {            get { return _cts.IsCancellationRequested; }        }    }}#endif
 |