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

◆ OutputAvailableAsync< TOutput >() [2/2]

static Task< bool > System.Threading.Tasks.Dataflow.DataflowBlock.OutputAvailableAsync< TOutput > ( this ISourceBlock< TOutput > source,
CancellationToken cancellationToken )
inlinestatic

Definition at line 1465 of file DataflowBlock.cs.

1466 {
1467 if (source == null)
1468 {
1469 throw new ArgumentNullException("source");
1470 }
1471 if (cancellationToken.IsCancellationRequested)
1472 {
1473 return Common.CreateTaskFromCancellation<bool>(cancellationToken);
1474 }
1476 try
1477 {
1478 outputAvailableAsyncTarget._unlinker = source.LinkTo(outputAvailableAsyncTarget, DataflowLinkOptions.UnlinkAfterOneAndPropagateCompletion);
1479 if (outputAvailableAsyncTarget.Task.IsCompleted)
1480 {
1481 return outputAvailableAsyncTarget.Task;
1482 }
1483 if (cancellationToken.CanBeCanceled)
1484 {
1485 outputAvailableAsyncTarget._ctr = cancellationToken.Register(OutputAvailableAsyncTarget<TOutput>.s_cancelAndUnlink, outputAvailableAsyncTarget);
1486 }
1487 return outputAvailableAsyncTarget.Task.ContinueWith(OutputAvailableAsyncTarget<TOutput>.s_handleCompletion, outputAvailableAsyncTarget, CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.NotOnCanceled, TaskScheduler.Default);
1488 }
1489 catch (Exception exception)
1490 {
1491 outputAvailableAsyncTarget.TrySetException(exception);
1492 outputAvailableAsyncTarget.AttemptThreadSafeUnlink();
1493 return outputAvailableAsyncTarget.Task;
1494 }
1495 }
static TaskContinuationOptions GetContinuationOptions(TaskContinuationOptions toInclude=TaskContinuationOptions.None)
Definition Common.cs:262

References System.cancellationToken, System.Threading.Tasks.TaskScheduler.Default, System.exception, System.Threading.Tasks.Dataflow.Internal.Common.GetContinuationOptions(), System.Threading.CancellationToken.None, System.source, and System.Threading.Tasks.Dataflow.DataflowLinkOptions.UnlinkAfterOneAndPropagateCompletion.