TaskExtensions.Unwrap<TResult> Method (Task<Task<TResult>>)
Creates a proxy Task that represents the asynchronous operation of a Task<Task<T>> (C#) or Task (Of Task(Of T)) (Visual Basic).
Assemblies: System.Core (in System.Core.dll)
System.Threading.Tasks (in System.Threading.Tasks.dll)
The type of the task's result.
Return ValueType: System.Threading.Tasks.Task<>
A Task that represents the asynchronous operation of the provided Task<Task<T>> (C#) or Task (Of Task(Of T)) (Visual Basic).
Usage NoteIn Visual Basic and C#, you can call this method as an instance method on any object of type Task<Task<>>. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).
The exception that is thrown if the task argument is null.
It is often useful to be able to return a Task from a Task, where the inner Task represents work done as part of the outer Task. However, doing so results in a Task<Task<T>> (C#) or Task (Of Task(Of T)) (Visual Basic), which, if not dealt with carefully, could produce unexpected behavior. Unwrap solves this problem by creating a proxy Task<TResult> that represents the entire asynchronous operation of such a Task<Task<T>> (C#) or Task (Of Task(Of T)) (Visual Basic).