System.Threading.CancellationRegion.SetCancelable C# (CSharp) Method

SetCancelable() private method

private SetCancelable ( CancellationSignal signal ) : CancellationRegion
signal CancellationSignal
return CancellationRegion
        public static CancellationRegion SetCancelable(CancellationSignal signal)
        {
            if (signal == null)
                throw new ArgumentNullException("signal");

            Thread t = Thread.CurrentThread;
            signal.Thread = t;
            List<CancellationSignal> signals = t.CancellationSignals;
            CancellationRegion region = new CancellationRegion(signal);

            lock(signals) {
                signals.Add(signal);
                // Note that all failures due to allocations will be above 
                // this point in this method.  Also, note that it's fine to 
                // Add first then get thread affinity later - the Cancel
                // method holds this same lock while cancelling.
                // Ensure that another fiber cannot run on this thread.
                Thread.BeginThreadAffinity();
            }
            return region;
        }