Click or drag to resize
CoreTaskExtensionsThenTSource Method (TaskTSource, FuncTaskTSource, Task, Boolean)
Execute a continuation task when a task completes. The continuation task is synchronously created by a continuation function, and then unwrapped to form the result of this method. The supportsErrors parameter specifies whether the continuation is executed if the antecedent task is faulted.

Namespace: Rackspace.Threading
Assembly: Rackspace.Threading (in Rackspace.Threading.dll) Version: 2.1.0-beta1
Syntax
public static Task Then<TSource>(
	this Task<TSource> task,
	Func<Task<TSource>, Task> continuationFunction,
	bool supportsErrors
)

Parameters

task
Type: System.Threading.TasksTaskTSource
The antecedent task.
continuationFunction
Type: SystemFuncTaskTSource, Task
The continuation function to execute when task completes. The continuation function returns a Task which provides the final result of the continuation.
supportsErrors
Type: SystemBoolean
if the continuationFunction properly handles a faulted antecedent task; otherwise, .

Type Parameters

TSource
The type of the result produced by the antecedent TaskTResult.

Return Value

Type: Task
A Task representing the unwrapped asynchronous operation.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type TaskTSource. 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).
Exceptions
ExceptionCondition
ArgumentNullException

If task is .

-or-

If continuationFunction is .

Remarks

This code implements support for the following construct without requiring the use of /.

C#
try
{
    TSource source = await task.ConfigureAwait(false);
}
catch
{
    if (!supportsErrors)
        throw;
}

await continuationFunction(task).ConfigureAwait(false);

If the antecedent task is canceled, or faulted with supportsErrors set to , the status of the antecedent is directly applied to the task returned by this method; it is not wrapped in an additional AggregateException.

Note Notes to Callers

Since the continuationFunction is executed synchronously, this method should only be used for lightweight continuation functions. This restriction applies only to continuationFunction itself, not to the Task returned by it.

Version Information

.NET for Windows Store apps

Supported in: Windows 8

.NET Framework

Supported in: 4.5, 4.0, 3.5

Portable Class Library

Supported in: Portable Class Library (Legacy), Portable Class Library

Threading Library

Supported in: 2.1, 2.0, 1.1, 1.0
See Also