Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Task.ContinueWith (Método) (Action<Task>, TaskContinuationOptions)

Crea una continuación que se ejecuta según el objeto TaskContinuationOptions especificado.

Espacio de nombres:  System.Threading.Tasks
Ensamblado:  mscorlib (en mscorlib.dll)

public Task ContinueWith(
	Action<Task> continuationAction,
	TaskContinuationOptions continuationOptions
)

Parámetros

continuationAction
Tipo: System.Action<Task>
Una acción para ejecutarse según el continuationOptionsespecificado. Cuando se ejecute, al delegado se le pasará la tarea completada como un argumento.
continuationOptions
Tipo: System.Threading.Tasks.TaskContinuationOptions
Opciones para la programación y el comportamiento de la continuación. Incluye criterios, como OnlyOnCanceled, y opciones de ejecución, como ExecuteSynchronously.

Valor devuelto

Tipo: System.Threading.Tasks.Task
Nuevo objeto Task de continuación.

ExcepciónCondición
ObjectDisposedException

Se ha eliminado el objeto Task.

ArgumentNullException

El argumento de continuationAction es nulo.

ArgumentOutOfRangeException

El argumento continuationOptions especifica un valor no válido para TaskContinuationOptions.

La ejecución de la tarea Task devuelta no se programará hasta que la tarea actual se haya completado. Si no se cumplen los criterios de continuación especificados a través del parámetro continuationOptions, la tarea de continuación se cancelará en lugar de programarse.

El ejemplo siguiente se muestra con TaskContinuationOptions para especificar que una tarea de continuación se debe ejecutar sincrónicamente cuando la tarea anterior se complete. (Si la tarea especificada ya se ha completado en el momento de llamar a ContinueWith , la continuación sincrónica se ejecutará en el subproceso que llama ContinueWith.)

// C#

public class TaskCounter

{

private volatile int _count;

public void Track(Task t)

{

if (t == null) throw new ArgumentNullException("t");

Interlocked.Increment(ref _count);

t.ContinueWith(ct => Interlocked.Decrement(ref _count), TaskContinuationOptions.ExecuteSynchronously);

}

public int NumberOfActiveTasks { get { return _count; } }

}

' Visual Basic

Public Class TaskCounter

Private _count as Integer

Public Sub Track(ByVal t as Task)

If t is Nothing Then Throw New ArgumentNullException("t")

Interlocked.Increment(_count)

t.ContinueWith(Sub(ct)

Interlocked.Decrement(_count)

End Sub, TaskContinuationOptions.ExecuteSynchronously)

End Sub

Public ReadOnly Property NumberOfActiveTasks As Integer

Get

Return _count

End Get

End Property

End Class

.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4

.NET Framework Client Profile

Compatible con: 4

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft