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).
Assembly: System.Core (in System.Core.dll)
public: generic<typename TResult> [ExtensionAttribute] static Task<TResult>^ Unwrap( Task<Task<TResult>^>^ task )
Parameters
- task
-
Type:
System.Threading.Tasks::Task<Task<TResult>^>^
The Task<Task<T>> (C#) or Task (Of Task(Of T)) (Visual Basic) to unwrap.
Return Value
Type: System.Threading.Tasks::Task<TResult>^A Task that represents the asynchronous operation of the provided Task<Task<T>> (C#) or Task (Of Task(Of T)) (Visual Basic).
Type Parameters
- TResult
The type of the task's result.
| Exception | Condition |
|---|---|
| ArgumentNullException | 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).
Available since 8
.NET Framework
Available since 4.0
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 5.0
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1