aboutsummaryrefslogtreecommitdiff
path: root/CancellationDisposable.cs
blob: 700a2c21f38833c68fd1c2fe5d8ccb582be3a5e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Threading;

namespace Rehau.Sku.Assist
{
    sealed class CancellationDisposable : IDisposable
    {

        readonly CancellationTokenSource cts;
        public CancellationDisposable(CancellationTokenSource cts)
        {
            if (cts == null)
            {
                throw new ArgumentNullException("cts");
            }

            this.cts = cts;
        }

        public CancellationDisposable()
            : this(new CancellationTokenSource())
        {
        }

        public CancellationToken Token
        {
            get { return cts.Token; }
        }

        public void Dispose()
        {
            cts.Cancel();
        }
    }

}