<PackageReference Include="System.ClientModel" Version="1.2.1" />

OperationResult

public abstract class OperationResult
Represents an operation that runs asynchronously on a cloud service. Cloud services use long-running operations to allow users to start an operation with one request and then monitor progress of the operation until it has completed. OperationResult enables waiting for completion of long-running operations. Client libraries provide derived types that add properties such as Value or Status as applicable for a given service operation.
using System.ClientModel.Internal; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace System.ClientModel.Primitives { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] public abstract class OperationResult { private PipelineResponse _response; public bool HasCompleted { get; set; } [System.Runtime.CompilerServices.Nullable(2)] public abstract ContinuationToken RehydrationToken { [System.Runtime.CompilerServices.NullableContext(2)] get; [System.Runtime.CompilerServices.NullableContext(2)] protected set; } protected OperationResult(PipelineResponse response) { _response = response; } [System.Runtime.CompilerServices.NullableContext(2)] [return: System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1 })] public abstract ValueTask<ClientResult> UpdateStatusAsync(RequestOptions options = null); public abstract ClientResult UpdateStatus([System.Runtime.CompilerServices.Nullable(2)] RequestOptions options = null); [AsyncStateMachine(typeof(<WaitForCompletionAsync>d__11))] public virtual ValueTask WaitForCompletionAsync(CancellationToken cancellationToken = default(CancellationToken)) { <WaitForCompletionAsync>d__11 stateMachine = default(<WaitForCompletionAsync>d__11); stateMachine.<>t__builder = AsyncValueTaskMethodBuilder.Create(); stateMachine.<>4__this = this; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual void WaitForCompletion(CancellationToken cancellationToken = default(CancellationToken)) { PollingInterval pollingInterval = new PollingInterval(null); while (!HasCompleted) { PipelineResponse rawResponse = GetRawResponse(); pollingInterval.Wait(rawResponse, cancellationToken); RequestOptions options = RequestOptions.FromCancellationToken(cancellationToken); ClientResult clientResult = UpdateStatus(options); SetRawResponse(clientResult.GetRawResponse()); } } public PipelineResponse GetRawResponse() { return _response; } protected void SetRawResponse(PipelineResponse response) { Argument.AssertNotNull(response, "response"); _response = response; } } }