55 if (yieldedBeforeCompletion)
65 _replicator._stopReplicating =
true;
74 _replicator._stopReplicating =
true;
82 protected abstract void ExecuteAction(out
bool yieldedBeforeCompletion);
92 : base(replicator, maxConcurrency,
timeout)
130 TState replicaState =
default(TState);
131 action(ref replicaState,
timeout, out var yieldedBeforeCompletion);
132 if (yieldedBeforeCompletion)
134 throw new Exception(
"Replicated tasks cannot yield in this single-threaded browser environment");
138 int maxConcurrency = ((options.EffectiveMaxConcurrencyLevel > 0) ?
options.EffectiveMaxConcurrencyLevel :
int.MaxValue);
156 return 100 + tickCount % processorCount * 50;
static int ProcessorCount
override void CreateNewReplica()
Replica(TaskReplicator replicator, int maxConcurrency, int timeout)
int _remainingConcurrency
void ExecuteAction(out bool yieldedBeforeCompletion)
override void ExecuteAction(out bool yieldedBeforeCompletion)
Replica(TaskReplicator replicator, int maxConcurrency, int timeout, ReplicatableUserAction< TState > action)
volatile Task _pendingTask
readonly ReplicatableUserAction< TState > _action
readonly TaskReplicator _replicator
readonly bool _stopOnFirstFailure
delegate void ReplicatableUserAction< TState >(ref TState replicaState, int timeout, out bool yieldedBeforeCompletion)
TaskReplicator(ParallelOptions options, bool stopOnFirstFailure)
readonly TaskScheduler _scheduler
static void Run< TState >(ReplicatableUserAction< TState > action, ParallelOptions options, bool stopOnFirstFailure)
readonly ConcurrentQueue< Replica > _pendingReplicas
ConcurrentQueue< Exception > _exceptions
static int GenerateCooperativeMultitaskingTaskTimeout()
static TaskScheduler Current
static CancellationToken None