TaskExtensions.Unwrap Method (Task<Task>)
Microsoft Silverlight will reach end of support after October 2021. Learn more.
Creates a proxy Task that represents the asynchronous operation of a Task<Task>.
Namespace: System.Threading.Tasks
Assembly: System.Core (in System.Core.dll)
Syntax
'Declaration
<ExtensionAttribute> _
Public Shared Function Unwrap ( _
task As Task(Of Task) _
) As Task
public static Task Unwrap(
this Task<Task> task
)
Parameters
- task
Type: System.Threading.Tasks.Task<Task>
The Task<Task> (C#) or Task (Of Task) (Visual Basic) to unwrap.
Return Value
Type: System.Threading.Tasks.Task
A Task that represents the asynchronous operation of the provided System.Threading.Tasks.Task(Of Task).
Usage Note
In 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.
Exceptions
Exception | Condition |
---|---|
ArgumentNullException | The exception that is thrown if the task argument is null. |
Remarks
It is often useful to be able to return a Task from a Task<TResult>, where the inner Task represents work done as part of the outer Task<TResult>. However, doing so results in a Task<Task> (C#) or Task (Of Task) (Visual Basic), which, if not dealt with carefully, could produce unexpected behavior. Unwrap solves this problem by creating a proxy Task that represents the entire asynchronous operation of such a task.
Examples
The following example shows how to unwrap a task:
Version Information
Silverlight
Supported in: 5
Platforms
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.
See Also