diff options
Diffstat (limited to 'src/mscorlib/src/System/Threading/CancellationTokenSource.cs')
-rw-r--r-- | src/mscorlib/src/System/Threading/CancellationTokenSource.cs | 37 |
1 files changed, 17 insertions, 20 deletions
diff --git a/src/mscorlib/src/System/Threading/CancellationTokenSource.cs b/src/mscorlib/src/System/Threading/CancellationTokenSource.cs index 954cd38344..fe9e0dec76 100644 --- a/src/mscorlib/src/System/Threading/CancellationTokenSource.cs +++ b/src/mscorlib/src/System/Threading/CancellationTokenSource.cs @@ -11,6 +11,7 @@ using System.Security; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Security.Permissions; +using System.Diagnostics; using System.Diagnostics.Contracts; using System.Runtime; @@ -35,7 +36,6 @@ namespace System.Threading /// </para> /// </remarks> [ComVisible(false)] - [HostProtection(Synchronization = true, ExternalThreading = true)] public class CancellationTokenSource : IDisposable { @@ -275,7 +275,7 @@ namespace System.Threading long totalMilliseconds = (long)delay.TotalMilliseconds; if (totalMilliseconds < -1 || totalMilliseconds > Int32.MaxValue) { - throw new ArgumentOutOfRangeException("delay"); + throw new ArgumentOutOfRangeException(nameof(delay)); } InitializeWithTimer((int)totalMilliseconds); @@ -304,7 +304,7 @@ namespace System.Threading { if (millisecondsDelay < -1) { - throw new ArgumentOutOfRangeException("millisecondsDelay"); + throw new ArgumentOutOfRangeException(nameof(millisecondsDelay)); } InitializeWithTimer(millisecondsDelay); @@ -414,7 +414,7 @@ namespace System.Threading long totalMilliseconds = (long)delay.TotalMilliseconds; if (totalMilliseconds < -1 || totalMilliseconds > Int32.MaxValue) { - throw new ArgumentOutOfRangeException("delay"); + throw new ArgumentOutOfRangeException(nameof(delay)); } CancelAfter((int)totalMilliseconds); @@ -450,7 +450,7 @@ namespace System.Threading if (millisecondsDelay < -1) { - throw new ArgumentOutOfRangeException("millisecondsDelay"); + throw new ArgumentOutOfRangeException(nameof(millisecondsDelay)); } if (IsCancellationRequested) return; @@ -629,7 +629,7 @@ namespace System.Threading } // the CancellationToken has already checked that the token is cancelable before calling this method. - Contract.Assert(CanBeCanceled, "Cannot register for uncancelable token src"); + Debug.Assert(CanBeCanceled, "Cannot register for uncancelable token src"); // if not canceled, register the event handlers // if canceled already, run the callback synchronously @@ -730,7 +730,7 @@ namespace System.Threading // - After transition, no more delegates will be added to the // - list of handlers, and hence it can be consumed and cleared at leisure by ExecuteCallbackHandlers. ExecuteCallbackHandlers(throwOnFirstException); - Contract.Assert(IsCancellationCompleted, "Expected cancellation to have finished"); + Debug.Assert(IsCancellationCompleted, "Expected cancellation to have finished"); } } @@ -742,8 +742,8 @@ namespace System.Threading /// </remarks> private void ExecuteCallbackHandlers(bool throwOnFirstException) { - Contract.Assert(IsCancellationRequested, "ExecuteCallbackHandlers should only be called after setting IsCancellationRequested->true"); - Contract.Assert(ThreadIDExecutingCallbacks != -1, "ThreadIDExecutingCallbacks should have been set."); + Debug.Assert(IsCancellationRequested, "ExecuteCallbackHandlers should only be called after setting IsCancellationRequested->true"); + Debug.Assert(ThreadIDExecutingCallbacks != -1, "ThreadIDExecutingCallbacks should have been set."); // Design decision: call the delegates in LIFO order so that callbacks fire 'deepest first'. // This is intended to help with nesting scenarios so that child enlisters cancel before their parents. @@ -791,7 +791,7 @@ namespace System.Threading var wsc = m_executingCallback as CancellationCallbackInfo.WithSyncContext; if (wsc != null) { - Contract.Assert(wsc.TargetSyncContext != null, "Should only have derived CCI if non-null SyncCtx"); + Debug.Assert(wsc.TargetSyncContext != null, "Should only have derived CCI if non-null SyncCtx"); wsc.TargetSyncContext.Send(CancellationCallbackCoreWork_OnSyncContext, args); // CancellationCallbackCoreWork_OnSyncContext may have altered ThreadIDExecutingCallbacks, so reset it. ThreadIDExecutingCallbacks = Thread.CurrentThread.ManagedThreadId; @@ -828,7 +828,7 @@ namespace System.Threading if (exceptionList != null) { - Contract.Assert(exceptionList.Count > 0, "Expected exception count > 0"); + Debug.Assert(exceptionList.Count > 0, "Expected exception count > 0"); throw new AggregateException(exceptionList); } } @@ -882,7 +882,7 @@ namespace System.Threading public static CancellationTokenSource CreateLinkedTokenSource(params CancellationToken[] tokens) { if (tokens == null) - throw new ArgumentNullException("tokens"); + throw new ArgumentNullException(nameof(tokens)); if (tokens.Length == 0) throw new ArgumentException(Environment.GetResourceString("CancellationToken_CreateLinkedToken_TokensIsEmpty")); @@ -1029,14 +1029,12 @@ namespace System.Threading } // Cached callback delegate that's lazily initialized due to ContextCallback being SecurityCritical - [SecurityCritical] private static ContextCallback s_executionContextCallback; /// <summary> /// InternalExecuteCallbackSynchronously_GeneralPath /// This will be called on the target synchronization context, however, we still need to restore the required execution context /// </summary> - [SecuritySafeCritical] internal void ExecuteCallback() { if (TargetExecutionContext != null) @@ -1059,11 +1057,10 @@ namespace System.Threading // the worker method to actually run the callback // The signature is such that it can be used as a 'ContextCallback' - [SecurityCritical] private static void ExecutionContextCallback(object obj) { CancellationCallbackInfo callbackInfo = obj as CancellationCallbackInfo; - Contract.Assert(callbackInfo != null); + Debug.Assert(callbackInfo != null); callbackInfo.Callback(callbackInfo.StateForCallback); } } @@ -1147,14 +1144,14 @@ namespace System.Threading start = 0; curr.m_freeCount--; // Too many free elements; fix up. } - Contract.Assert(start >= 0 && start < c, "start is outside of bounds"); + Debug.Assert(start >= 0 && start < c, "start is outside of bounds"); // Now walk the array until we find a free slot (or reach the end). for (int i = 0; i < c; i++) { // If the slot is null, try to CAS our element into it. int tryIndex = (start + i) % c; - Contract.Assert(tryIndex >= 0 && tryIndex < curr.m_elements.Length, "tryIndex is outside of bounds"); + Debug.Assert(tryIndex >= 0 && tryIndex < curr.m_elements.Length, "tryIndex is outside of bounds"); if (curr.m_elements[tryIndex] == null && Interlocked.CompareExchange(ref curr.m_elements[tryIndex], element, null) == null) { @@ -1193,8 +1190,8 @@ namespace System.Threading internal SparselyPopulatedArrayAddInfo(SparselyPopulatedArrayFragment<T> source, int index) { - Contract.Assert(source != null); - Contract.Assert(index >= 0 && index < source.Length); + Debug.Assert(source != null); + Debug.Assert(index >= 0 && index < source.Length); m_source = source; m_index = index; } |