本文整理汇总了C#中TaskCompletionSource.?.TrySetResult方法的典型用法代码示例。如果您正苦于以下问题:C# TaskCompletionSource.?.TrySetResult方法的具体用法?C# TaskCompletionSource.?.TrySetResult怎么用?C# TaskCompletionSource.?.TrySetResult使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TaskCompletionSource
的用法示例。
在下文中一共展示了TaskCompletionSource.?.TrySetResult方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PumpOperations
/// <summary>
/// Retrieves, applies, and acknowledges each operation from the provided <paramref name="queue"/>.
/// </summary>
/// <param name="queue">The queue.</param>
/// <param name="apply">The method used to apply each operation.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <param name="initiated">
/// Optional completion to signify that the queue draining has begun.
/// </param>
/// <returns>A <see cref="Task"/> representing the work performed.</returns>
private static async Task PumpOperations(
IOperationStream queue,
OperationApplier apply,
CancellationToken cancellationToken,
TaskCompletionSource<int> initiated = null)
{
var firstOperation = true;
do
{
cancellationToken.ThrowIfCancellationRequested();
// Start retrieving the next operation.
var nextOperation = queue.GetOperationAsync(cancellationToken);
// If this is the first operation and the caller has requested to be notified that draining has begun,
// notify the caller.
if (firstOperation)
{
initiated?.TrySetResult(0);
firstOperation = false;
}
// Wait for the operation to be retrieved.
var operation = await nextOperation.ConfigureAwait(false);
// A null operation signifies that the queue has been completely drained.
if (operation == null)
{
return;
}
// Apply and acknowledge the operation.
await apply(operation, cancellationToken).ConfigureAwait(false);
operation.Acknowledge();
}
while (true);
}