Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ JoinBlock() [4/4]

Definition at line 257 of file JoinBlock.cs.

258 {
259 if (dataflowBlockOptions == null)
260 {
261 throw new ArgumentNullException("dataflowBlockOptions");
262 }
265 if (dataflowBlockOptions.BoundedCapacity > 0)
266 {
268 {
269 ((JoinBlock<T1, T2, T3>)owningSource)._sharedResources.OnItemsRemoved(count);
270 };
271 }
273 {
274 ((JoinBlock<T1, T2, T3>)owningSource)._sharedResources.CompleteEachTarget();
278 {
280 }, delegate(Exception exception)
281 {
283 _source.AddException(exception);
288 Task.Factory.ContinueWhenAll(new Task[3] { _target1.CompletionTaskInternal, _target2.CompletionTaskInternal, _target3.CompletionTaskInternal }, delegate
289 {
290 _source.Complete();
291 }, CancellationToken.None, Common.GetContinuationOptions(), TaskScheduler.Default);
292 _source.Completion.ContinueWith(delegate(Task completed, object state)
293 {
294 IDataflowBlock dataflowBlock = (JoinBlock<T1, T2, T3>)state;
295 dataflowBlock.Fault(completed.Exception);
296 }, this, CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Default);
297 Common.WireCancellationToComplete(dataflowBlockOptions.CancellationToken, _source.Completion, delegate(object state)
298 {
299 ((JoinBlock<T1, T2, T3>)state)._sharedResources.CompleteEachTarget();
300 }, this);
302 if (log.IsEnabled())
303 {
304 log.DataflowBlockCreated(this, dataflowBlockOptions);
305 }
306 }
static TaskContinuationOptions GetContinuationOptions(TaskContinuationOptions toInclude=TaskContinuationOptions.None)
Definition Common.cs:262
static void WireCancellationToComplete(CancellationToken cancellationToken, Task completionTask, Action< object > completeAction, object completeState)
Definition Common.cs:93
readonly JoinBlockTarget< T1 > _target1
Definition JoinBlock.cs:53
readonly JoinBlockTargetSharedResources _sharedResources
Definition JoinBlock.cs:49
readonly JoinBlockTarget< T3 > _target3
Definition JoinBlock.cs:234
readonly SourceCore< Tuple< T1, T2 > > _source
Definition JoinBlock.cs:51
readonly JoinBlockTarget< T2 > _target2
Definition JoinBlock.cs:55

References System.Threading.Tasks.Dataflow.Internal.JoinBlockTargetSharedResources._hasExceptions, System.Threading.Tasks.Dataflow.JoinBlock< T1, T2, T3 >._sharedResources, System.Threading.Tasks.Dataflow.JoinBlock< T1, T2, T3 >._source, System.Threading.Tasks.Dataflow.JoinBlock< T1, T2, T3 >._target1, System.Threading.Tasks.Dataflow.JoinBlock< T1, T2, T3 >._target2, System.Threading.Tasks.Dataflow.JoinBlock< T1, T2, T3 >._target3, System.array, System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget< T >.CompletionTaskInternal, System.count, System.Threading.Tasks.TaskScheduler.Default, System.exception, System.Threading.Tasks.Task< TResult >.Factory, System.Threading.Tasks.Dataflow.Internal.Common.GetContinuationOptions(), System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget< T >.GetOneMessage(), System.Threading.Tasks.Dataflow.Internal.DataflowEtwProvider.Log, System.Threading.CancellationToken.None, System.state, System.value, System.Threading.Tasks.Dataflow.Internal.Common.WireCancellationToComplete(), and System.Threading.Volatile.Write().