Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/rx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Rx.NET/System.Reactive.Core/Reactive/Disposables/CancellationDisposable.cs')
-rw-r--r--Rx.NET/System.Reactive.Core/Reactive/Disposables/CancellationDisposable.cs61
1 files changed, 61 insertions, 0 deletions
diff --git a/Rx.NET/System.Reactive.Core/Reactive/Disposables/CancellationDisposable.cs b/Rx.NET/System.Reactive.Core/Reactive/Disposables/CancellationDisposable.cs
new file mode 100644
index 0000000..5c67511
--- /dev/null
+++ b/Rx.NET/System.Reactive.Core/Reactive/Disposables/CancellationDisposable.cs
@@ -0,0 +1,61 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+
+#if !NO_TPL
+using 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 \ No newline at end of file