From 72185771e8dfd87d5a45732aec1566d8f3147c6e Mon Sep 17 00:00:00 2001 From: Marek Safar Date: Mon, 23 Nov 2020 13:58:33 +0100 Subject: [PATCH] Create cancellation token registration wrapper only when it's needed (#45075) Co-authored-by: Stephen Toub --- .../src/System/Threading/CancellationToken.cs | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/CancellationToken.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/CancellationToken.cs index 18d7194fbd770..196956c57331a 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/CancellationToken.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/CancellationToken.cs @@ -35,12 +35,6 @@ public readonly struct CancellationToken private readonly CancellationTokenSource? _source; // !! warning. If more fields are added, the assumptions in CreateLinkedToken may no longer be valid - private static readonly Action s_actionToActionObjShunt = obj => - { - Debug.Assert(obj is Action, $"Expected {typeof(Action)}, got {obj}"); - ((Action)obj)(); - }; - /// /// Returns an empty CancellationToken value. /// @@ -136,12 +130,7 @@ public CancellationToken(bool canceled) : this(canceled ? CancellationTokenSourc /// The instance that can /// be used to unregister the callback. /// is null. - public CancellationTokenRegistration Register(Action callback) => - Register( - s_actionToActionObjShunt, - callback ?? throw new ArgumentNullException(nameof(callback)), - useSynchronizationContext: false, - useExecutionContext: true); + public CancellationTokenRegistration Register(Action callback) => Register(callback, useSynchronizationContext: false); /// /// Registers a delegate that will be called when this @@ -167,7 +156,7 @@ public CancellationTokenRegistration Register(Action callback) => /// is null. public CancellationTokenRegistration Register(Action callback, bool useSynchronizationContext) => Register( - s_actionToActionObjShunt, + (Action)(static obj => ((Action)obj!)()), callback ?? throw new ArgumentNullException(nameof(callback)), useSynchronizationContext, useExecutionContext: true);