internal Task(TaskStatus taskStatus, InternalTaskOptions internalTaskOptions) { _status = (int)taskStatus; _internalOptions = internalTaskOptions; ExecutingTaskScheduler = TaskScheduler.Default; _waitHandle = new ManualResetEventSlim(false); }
public ContinuationTaskFromTask(Task antecedent, Delegate action, object state, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions) : base(action, state, InternalCurrentIfAttached(creationOptions), default(CancellationToken), creationOptions, internalOptions, antecedent.Scheduler) { Contract.Requires(action is Action<Task> || action is Action<Task, object>, "Invalid delegate type in ContinuationTaskFromTask"); _antecedent = antecedent; CapturedContext = ExecutionContext.Capture(); }
public ContinuationResultTaskFromResultTask ( Task <TAntecedentResult> antecedent, Delegate function, object?state, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions ) : base(function, state, InternalCurrentIfAttached(creationOptions), default, creationOptions, internalOptions, TaskScheduler.Default) { Contract.Requires(function is Func <Task <TAntecedentResult>, TResult> || function is Func <Task <TAntecedentResult>, object?, TResult>, "Invalid delegate type in ContinuationResultTaskFromResultTask"); _antecedent = antecedent; CapturedContext = ExecutionContext.Capture(); }
public ContinuationResultTaskFromTask(Task antecedent, Delegate function, object state, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions) : base(function, state, InternalCurrentIfAttached(creationOptions), default(CancellationToken), creationOptions, internalOptions, antecedent.Scheduler) { Contract.Requires(function is Func <Task, TResult> || function is Func <Task, object, TResult>, "Invalid delegate type in ContinuationResultTaskFromTask"); _antecedent = antecedent; CapturedContext = ExecutionContext.Capture(); }
public ContinuationTaskFromResultTask(Task <TAntecedentResult> antecedent, Delegate action, object state, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions) : base(action, state, InternalCurrentIfAttached(creationOptions), default(CancellationToken), creationOptions, internalOptions, TaskScheduler.Default) { Contract.Requires(action is Action <Task <TAntecedentResult> > || action is Action <Task <TAntecedentResult>, object>, "Invalid delegate type in ContinuationTaskFromResultTask"); _antecedent = antecedent; CapturedContext = ExecutionContext.Capture(); }
internal override Task CreateReplicaTask(Action <object> taskReplicaDelegate, object stateObject, Task parentTask, TaskScheduler taskScheduler, TaskCreationOptions creationOptionsForReplica, InternalTaskOptions internalOptionsForReplica) { return((Task) new ParallelForReplicaTask(taskReplicaDelegate, stateObject, parentTask, taskScheduler, creationOptionsForReplica, internalOptionsForReplica)); }
public ContinuationResultTaskFromTask( Task antecedent, Delegate function, object state, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions) : base(function, state, Task.InternalCurrentIfAttached(creationOptions), default, creationOptions, internalOptions, null) { Debug.Assert(function is Func <Task, TResult> || function is Func <Task, object, TResult>, "Invalid delegate type in ContinuationResultTaskFromTask"); m_antecedent = antecedent; }
public ContinuationResultTaskFromResultTask( Task <TAntecedentResult> antecedent, Delegate function, object state, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions) : base(function, state, Task.InternalCurrentIfAttached(creationOptions), default(CancellationToken), creationOptions, internalOptions, null) { Debug.Assert(function is Func <Task <TAntecedentResult>, TResult> || function is Func <Task <TAntecedentResult>, object, TResult>, "Invalid delegate type in ContinuationResultTaskFromResultTask"); m_antecedent = antecedent; PossiblyCaptureContext(); }
internal Task(Func <object, TResult> valueSelector, object state, Task parent, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler, ref StackCrawlMark stackMark) : this(valueSelector, state, parent, cancellationToken, creationOptions, internalOptions, scheduler) { base.PossiblyCaptureContext(ref stackMark); }
internal Task(Func <object, TResult> valueSelector, object state, Task parent, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler) : base((valueSelector != null) ? new Action <object>(Task <TResult> .InvokeFuture) : null, null, parent, cancellationToken, creationOptions, internalOptions, scheduler) { if ((internalOptions & InternalTaskOptions.SelfReplicating) != InternalTaskOptions.None) { throw new ArgumentOutOfRangeException("creationOptions", Environment.GetResourceString("TaskT_ctor_SelfReplicating")); } this.m_valueSelector = valueSelector; base.m_stateObject = this; this.m_futureState = state; }
internal ParallelForReplicaTask(Action<object> taskReplicaDelegate, object stateObject, Task parentTask, TaskScheduler taskScheduler, TaskCreationOptions creationOptionsForReplica, InternalTaskOptions internalOptionsForReplica) : base(taskReplicaDelegate, stateObject, parentTask, CancellationToken.None, creationOptionsForReplica, internalOptionsForReplica, taskScheduler) { }
internal ParallelForReplicatingTask(ParallelOptions parallelOptions, Action action, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions) : base(action, null, Task.InternalCurrent, default(CancellationToken), creationOptions, internalOptions | InternalTaskOptions.SelfReplicating, null) { this.m_replicationDownCount = parallelOptions.EffectiveMaxConcurrencyLevel; StackCrawlMark stackCrawlMark = StackCrawlMark.LookForMyCaller; base.PossiblyCaptureContext(ref stackCrawlMark); }
/// <summary> /// An internal constructor used by the factory methods on task and its descendent(s). /// This variant does not capture the ExecutionContext; it is up to the caller to do that. /// </summary> /// <param name="action">An action to execute.</param> /// <param name="state">Optional state to pass to the action.</param> /// <param name="parent">Parent of Task.</param> /// <param name="cancellationToken">A CancellationToken for the task.</param> /// <param name="scheduler">A task scheduler under which the task will run.</param> /// <param name="creationOptions">Options to control its execution.</param> /// <param name="internalOptions">Internal options to control its execution</param> internal Task(Delegate action, object state, Task parent, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler) { if (action == null) { throw new ArgumentNullException("action"); } if (ReferenceEquals(scheduler, null)) { throw new ArgumentNullException("scheduler"); } Contract.EndContractBlock(); // This is readonly, and so must be set in the constructor // Keep a link to your parent if: (A) You are attached, or (B) you are self-replicating. if ( ((creationOptions & TaskCreationOptions.AttachedToParent) != 0) || ((internalOptions & InternalTaskOptions.SelfReplicating) != 0) ) { _parent = parent; } _id = Interlocked.Increment(ref _lastId) - 1; _status = (int)TaskStatus.Created; if ( _parent != null && ((creationOptions & TaskCreationOptions.AttachedToParent) != 0) && ((_parent.CreationOptions & TaskCreationOptions.DenyChildAttach) == 0) ) { _parent.AddNewChild(); } Action = action; State = state; Scheduler = scheduler; _waitHandle = new ManualResetEventSlim(false); if ((creationOptions & ~(TaskCreationOptions.AttachedToParent | TaskCreationOptions.LongRunning | TaskCreationOptions.DenyChildAttach | TaskCreationOptions.HideScheduler | TaskCreationOptions.PreferFairness | TaskCreationOptions.RunContinuationsAsynchronously)) != 0) { throw new ArgumentOutOfRangeException("creationOptions"); } // Throw exception if the user specifies both LongRunning and SelfReplicating if (((creationOptions & TaskCreationOptions.LongRunning) != 0) && ((internalOptions & InternalTaskOptions.SelfReplicating) != 0)) { throw new InvalidOperationException("An attempt was made to create a LongRunning SelfReplicating task."); } if ((internalOptions & InternalTaskOptions.ContinuationTask) != 0) { // For continuation tasks or TaskCompletionSource.Tasks, begin life in the // WaitingForActivation state rather than the Created state. _status = (int)TaskStatus.WaitingForActivation; } _creationOptions = creationOptions; _internalOptions = internalOptions; // if we have a non-null cancellationToken, allocate the contingent properties to save it // we need to do this as the very last thing in the construction path, because the CT registration could modify m_stateFlags if (cancellationToken.CanBeCanceled) { AssignCancellationToken(cancellationToken, null, null); } }
internal Task(Delegate function, object?state, Task?parent, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler) : base(function, state, parent, cancellationToken, creationOptions, internalOptions, scheduler) { // Empty }
internal static Task <TResult> StartNew(Task parent, Func <object, TResult> function, object state, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler, ref StackCrawlMark stackMark) { if (function == null) { throw new ArgumentNullException("function"); } if (scheduler == null) { throw new ArgumentNullException("scheduler"); } if ((internalOptions & InternalTaskOptions.SelfReplicating) != InternalTaskOptions.None) { throw new ArgumentOutOfRangeException("creationOptions", Environment.GetResourceString("TaskT_ctor_SelfReplicating")); } Task <TResult> task = new Task <TResult>(function, state, parent, cancellationToken, creationOptions, internalOptions | InternalTaskOptions.QueuedByRuntime, scheduler, ref stackMark); task.ScheduleAndStart(false); return(task); }
internal Task(Action action, Task parent, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler) : this(action, null, parent, cancellationToken, creationOptions, internalOptions, scheduler) { CapturedContext = ExecutionContext.Capture(); }
internal Task(object state, CancellationToken cancellationToken, TaskCreationOptions options, InternalTaskOptions internalOptions) : base(null, cancellationToken, options, internalOptions, true) { this.m_valueSelector = null; this.m_futureState = state; }
public ContinuationTaskFromTask( Task antecedent, Delegate action, object state, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions) : base(action, state, Task.InternalCurrentIfAttached(creationOptions), default(CancellationToken), creationOptions, internalOptions, null) { Debug.Assert(action is Action <Task> || action is Action <Task, object>, "Invalid delegate type in ContinuationTaskFromTask"); m_antecedent = antecedent; PossiblyCaptureContext(); }
internal ParallelForReplicatingTask(ParallelOptions parallelOptions, Action action, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions) : base(action, null, Task.InternalCurrent, CancellationToken.None, creationOptions, internalOptions | InternalTaskOptions.SelfReplicating, null) { this.m_replicationDownCount = parallelOptions.EffectiveMaxConcurrencyLevel; StackCrawlMark lookForMyCaller = StackCrawlMark.LookForMyCaller; base.PossiblyCaptureContext(ref lookForMyCaller); }
public ContinuationTaskFromResultTask(Task <TAntecedentResult> antecedent, Delegate action, object state, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, ref StackCrawlMark stackMark) : base(action, state, Task.InternalCurrentIfAttached(creationOptions), new CancellationToken(), creationOptions, internalOptions, (TaskScheduler)null) { this.m_antecedent = antecedent; this.PossiblyCaptureContext(ref stackMark); }
internal override Task CreateReplicaTask(Action<object> taskReplicaDelegate, object stateObject, Task parentTask, TaskScheduler taskScheduler, TaskCreationOptions creationOptionsForReplica, InternalTaskOptions internalOptionsForReplica) { return new ParallelForReplicaTask(taskReplicaDelegate, stateObject, parentTask, taskScheduler, creationOptionsForReplica, internalOptionsForReplica); }
public ContinuationTaskFromResultTask( Task <TAntecedentResult> antecedent, Delegate action, object state, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions) : base(action, state, Task.InternalCurrentIfAttached(creationOptions), default, creationOptions, internalOptions, null) { Debug.Assert(action is Action <Task <TAntecedentResult> > || action is Action <Task <TAntecedentResult>, object>, "Invalid delegate type in ContinuationTaskFromResultTask"); m_antecedent = antecedent; }
internal Task(Action <object> action, object state, Task parent, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler) : this((Delegate)action, state, parent, cancellationToken, creationOptions, internalOptions, scheduler) { CapturedContext = ExecutionContext.Capture(); }
internal ParallelForReplicatingTask(ParallelOptions parallelOptions, Action action, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions) : base((Delegate)action, (object)null, Task.InternalCurrent, new CancellationToken(), creationOptions, internalOptions | InternalTaskOptions.SelfReplicating, (TaskScheduler)null) { this.m_replicationDownCount = parallelOptions.EffectiveMaxConcurrencyLevel; StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller; this.PossiblyCaptureContext(ref stackMark); }
/// <summary> /// An internal constructor used by the factory methods on task and its descendent(s). /// This variant does not capture the ExecutionContext; it is up to the caller to do that. /// </summary> /// <param name="action">An action to execute.</param> /// <param name="state">Optional state to pass to the action.</param> /// <param name="parent">Parent of Task.</param> /// <param name="cancellationToken">A CancellationToken for the task.</param> /// <param name="scheduler">A task scheduler under which the task will run.</param> /// <param name="creationOptions">Options to control its execution.</param> /// <param name="internalOptions">Internal options to control its execution</param> internal Task(Delegate action, object state, Task parent, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler) { if (action == null) { throw new ArgumentNullException("action"); } if (ReferenceEquals(scheduler, null)) { throw new ArgumentNullException("scheduler"); } Contract.EndContractBlock(); // This is readonly, and so must be set in the constructor // Keep a link to your parent if: (A) You are attached, or (B) you are self-replicating. if ( ((creationOptions & TaskCreationOptions.AttachedToParent) != 0) || ((internalOptions & InternalTaskOptions.SelfReplicating) != 0) ) { _parent = parent; } _id = Interlocked.Increment(ref _lastId) - 1; _status = (int)TaskStatus.Created; if ( _parent != null && ((creationOptions & TaskCreationOptions.AttachedToParent) != 0) && ((_parent.CreationOptions & TaskCreationOptions.DenyChildAttach) == 0) ) { _parent.AddNewChild(); } Action = action; State = state; ExecutingTaskScheduler = scheduler; _waitHandle = new ManualResetEventSlim(false); if ((creationOptions & ~(TaskCreationOptions.AttachedToParent | TaskCreationOptions.LongRunning | TaskCreationOptions.DenyChildAttach | TaskCreationOptions.HideScheduler | TaskCreationOptions.PreferFairness | TaskCreationOptions.RunContinuationsAsynchronously)) != 0) { throw new ArgumentOutOfRangeException("creationOptions"); } // Throw exception if the user specifies both LongRunning and SelfReplicating if (((creationOptions & TaskCreationOptions.LongRunning) != 0) && ((internalOptions & InternalTaskOptions.SelfReplicating) != 0)) { throw new InvalidOperationException("An attempt was made to create a LongRunning SelfReplicating task."); } if ((internalOptions & InternalTaskOptions.ContinuationTask) != 0) { // For continuation tasks or TaskCompletionSource.Tasks, begin life in the // WaitingForActivation state rather than the Created state. _status = (int)TaskStatus.WaitingForActivation; } _creationOptions = creationOptions; _internalOptions = internalOptions; // if we have a non-null cancellationToken, allocate the contingent properties to save it // we need to do this as the very last thing in the construction path, because the CT registration could modify m_stateFlags if (cancellationToken.CanBeCanceled) { AssignCancellationToken(cancellationToken, null, null); } }
internal Task(TaskStatus taskStatus, InternalTaskOptions internalTaskOptions) { _status = (int)taskStatus; _internalOptions = internalTaskOptions; ExecutingTaskScheduler = TaskScheduler.Default; }
public ContinuationTaskFromResultTask( Task <TAntecedentResult> antecedent, Delegate action, object state, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions) : base(action, state, Task.InternalCurrentIfAttached(creationOptions), default(CancellationToken), creationOptions, internalOptions, null) { Contract.Requires(action is Action <Task <TAntecedentResult> > || action is Action <Task <TAntecedentResult>, object>, "Invalid delegate type in ContinuationTaskFromResultTask"); m_antecedent = antecedent; PossiblyCaptureContext(); }
public ContinuationTaskFromTask(Task antecedent, Delegate action, object?state, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions) : base(action, state, InternalCurrentIfAttached(creationOptions), default, creationOptions, internalOptions, antecedent.ExecutingTaskScheduler) { Contract.Requires(action is Action <Task> || action is Action <Task, object?>, "Invalid delegate type in ContinuationTaskFromTask"); _antecedent = antecedent; CapturedContext = ExecutionContext.Capture(); }
public ContinuationResultTaskFromTask( Task antecedent, Delegate function, object state, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, ref StackCrawlMark stackMark) : base(function, state, Task.InternalCurrentIfAttached(creationOptions), default(CancellationToken), creationOptions, internalOptions, null) { Contract.Requires(function is Func <Task, TResult> || function is Func <Task, object, TResult>, "Invalid delegate type in ContinuationResultTaskFromTask"); m_antecedent = antecedent; PossiblyCaptureContext(ref stackMark); }
internal Task(Func <TResult> function, Task?parent, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler) : this(function, null, parent, cancellationToken, creationOptions, internalOptions, scheduler) { CapturedContext = ExecutionContext.Capture(); }
// Token: 0x06004046 RID: 16454 RVA: 0x000EF860 File Offset: 0x000EDA60 public ContinuationTaskFromTask(Task antecedent, Delegate action, object state, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, ref StackCrawlMark stackMark) : base(action, state, Task.InternalCurrentIfAttached(creationOptions), default(CancellationToken), creationOptions, internalOptions, null) { this.m_antecedent = antecedent; base.PossiblyCaptureContext(ref stackMark); }
internal ParallelForReplicaTask(Action <object> taskReplicaDelegate, object stateObject, Task parentTask, TaskScheduler taskScheduler, TaskCreationOptions creationOptionsForReplica, InternalTaskOptions internalOptionsForReplica) : base(taskReplicaDelegate, stateObject, parentTask, CancellationToken.None, creationOptionsForReplica, internalOptionsForReplica, taskScheduler) { }
internal Task(Action<object> action, object state, Task parent, CancellationToken cancellationToken, TaskCreationOptions creationOptions, InternalTaskOptions internalOptions, TaskScheduler scheduler) : this((Delegate)action, state, parent, cancellationToken, creationOptions, internalOptions, scheduler) { CapturedContext = ExecutionContext.Capture(); }