}
else
{
- Task.CompletedTask.ConfigureAwait(_value.ContinueOnCapturedContext).GetAwaiter().OnCompleted(continuation);
+ ValueTask.CompletedTask.ConfigureAwait(_value.ContinueOnCapturedContext).GetAwaiter().OnCompleted(continuation);
}
}
}
else
{
- Task.CompletedTask.ConfigureAwait(_value.ContinueOnCapturedContext).GetAwaiter().UnsafeOnCompleted(continuation);
+ ValueTask.CompletedTask.ConfigureAwait(_value.ContinueOnCapturedContext).GetAwaiter().UnsafeOnCompleted(continuation);
}
}
}
else
{
- Task.CompletedTask.ConfigureAwait(_value.ContinueOnCapturedContext).GetAwaiter().OnCompleted(continuation);
+ ValueTask.CompletedTask.ConfigureAwait(_value.ContinueOnCapturedContext).GetAwaiter().OnCompleted(continuation);
}
}
}
else
{
- Task.CompletedTask.ConfigureAwait(_value.ContinueOnCapturedContext).GetAwaiter().UnsafeOnCompleted(continuation);
+ ValueTask.CompletedTask.ConfigureAwait(_value.ContinueOnCapturedContext).GetAwaiter().UnsafeOnCompleted(continuation);
}
}
}
else
{
- Task.CompletedTask.GetAwaiter().OnCompleted(continuation);
+ ValueTask.CompletedTask.GetAwaiter().OnCompleted(continuation);
}
}
}
else
{
- Task.CompletedTask.GetAwaiter().UnsafeOnCompleted(continuation);
+ ValueTask.CompletedTask.GetAwaiter().UnsafeOnCompleted(continuation);
}
}
}
else
{
- Task.CompletedTask.GetAwaiter().OnCompleted(continuation);
+ ValueTask.CompletedTask.GetAwaiter().OnCompleted(continuation);
}
}
}
else
{
- Task.CompletedTask.GetAwaiter().UnsafeOnCompleted(continuation);
+ ValueTask.CompletedTask.GetAwaiter().UnsafeOnCompleted(continuation);
}
}
/// </summary>
UseSchedulingContext = 0x1,
/// <summary>
- /// Set if OnCompleted should capture the current <see cref="ExecutionContext"/> and use it to
- /// <see cref="ExecutionContext.Run"/> the continuation.
+ /// Set if OnCompleted should capture the current ExecutionContext and use it to run the continuation.
/// </summary>
FlowExecutionContext = 0x2,
}
[StructLayout(LayoutKind.Auto)]
public readonly struct ValueTask : IEquatable<ValueTask>
{
+ internal static Task CompletedTask
#if netstandard
- /// <summary>A successfully completed task.</summary>
- private static readonly Task s_completedTask = Task.Delay(0);
+ { get; } = Task.Delay(0);
+#else
+ => Task.CompletedTask;
#endif
/// <summary>null if representing a successful synchronous completion, otherwise a <see cref="Task"/> or a <see cref="IValueTaskSource"/>.</summary>
/// manufacture a new task object to represent the result.
/// </remarks>
public Task AsTask() =>
- _obj == null ?
-#if netstandard
- s_completedTask :
-#else
- Task.CompletedTask :
-#endif
+ _obj == null ? ValueTask.CompletedTask :
ObjectIsTask ? UnsafeTask :
GetTaskForValueTaskSource();
// Propagate any exceptions that may have occurred, then return
// an already successfully completed task.
t.GetResult(_token);
- return
-#if netstandard
- s_completedTask;
-#else
- Task.CompletedTask;
-#endif
+ return ValueTask.CompletedTask;
// If status is Faulted or Canceled, GetResult should throw. But
// we can't guarantee every implementation will do the "right thing".