/// <summary> /// FOR INTERNAL USE ONLY! /// </summary> internal void MaybeLinkSourceInternal(Internal.CancelationRef cancelationRef) { if (CanBeCanceled) { _ref.AddLinkedCancelation(cancelationRef); } }
/// <summary> /// Create a new <see cref="CancelationSource"/> that will be canceled either when you cancel it, or when any of the given tokens are canceled (with the same value), whichever is first. /// <para/>Note: the new <see cref="CancelationSource"/> still must be disposed when you are finished with it. /// </summary> /// <param name="tokens">An array that contains the cancelation token instances to observe.</param> /// <returns>A new <see cref="CancelationSource"/> that is linked to the source token.</returns> public static CancelationSource New(params CancelationToken[] tokens) { ValidateThreadAccess(1); CancelationSource newCancelationSource = New(); Internal.CancelationRef newCancelation = newCancelationSource._ref; for (int i = 0, max = tokens.Length; i < max & !newCancelation.IsCanceled; ++i) { tokens[i].MaybeLinkSourceInternal(newCancelation); } return(newCancelationSource); }
/// <summary> /// FOR INTERNAL USE ONLY! /// </summary> internal CancelationRegistration(Internal.CancelationRef cancelationRef, Internal.ICancelDelegate cancelDelegate) { _ref = cancelationRef; _id = _ref.TokenId; _order = _ref.Register(cancelDelegate); }
private CancelationSource(Internal.CancelationRef cancelationRef) { _ref = cancelationRef; _id = _ref.SourceId; }
/// <summary> /// FOR INTERNAL USE ONLY! /// </summary> internal CancelationToken(Internal.CancelationRef cancelationRef) { _ref = cancelationRef; _id = _ref.TokenId; }