internal CancellationTokenRegistration Register (Action callback, bool useSynchronizationContext) { CancellationTokenRegistration tokenReg = GetTokenReg (); if (canceled) { callback (); } else { bool temp = false; lock (syncRoot) { if (!(temp = canceled)) callbacks.Add (tokenReg, callback); } if (temp) callback (); } return tokenReg; }
/// <summary> /// Registers a callback to be invoked when this CancellationToken is cancelled. /// </summary> /// <param name="callback">The action to be invoked.</param> /// <returns>A registration object that can be used to deregister the callback.</returns> public CancellationTokenRegistration Register(Action callback) { if (source != null) { return(source.Register(callback)); } return(default(CancellationTokenRegistration)); }