ValueTask<TResult>.Preserve Method


Gets a ValueTask<TResult> that may be used at any point in the future.

 System::Threading::Tasks::ValueTask<TResult> Preserve();
public System.Threading.Tasks.ValueTask<TResult> Preserve ();
member this.Preserve : unit -> System.Threading.Tasks.ValueTask<'Result>
Public Function Preserve () As ValueTask(Of TResult)



A task object for future use.


Because a ValueTask<TResult> can be backed by a pooled IValueTaskSource<TResult>, it is not safe to await an arbitrary ValueTask<TResult> multiple times. You can use the Preserve() method to convert this ValueTask<TResult> into the instance backed by a regular Task<TResult> that is safe to await multiple times. This method is similar to AsTask(), but it returns the same ValueTask<TResult> instance when this ValueTask<TResult> represents a successful synchronously completed operation. After calling Preserve() the original ValueTask<TResult> should never be used again.

Applies to