Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

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

 

Crea una continuación que se ejecuta cuando se completa la tarea de destino según el elemento TaskContinuationOptions especificado.

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

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

Parámetros

continuationAction

Una acción para ejecutarse según el continuationOptions especificado.Cuando se ejecute, al delegado se le pasará la tarea completada como un argumento.

continuationOptions

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

Type: System.Threading.Tasks.Task

Nuevo objeto Task de continuación.

Exception Condition
ArgumentNullException

El continuationAction el argumento es null.

ArgumentOutOfRangeException

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

El valor devuelto Task no se programará para su ejecución hasta que finalice la tarea actual.Si especifican los criterios de continuación a través de la continuationOptions parámetro no se cumplen, la tarea de continuación se cancelará en lugar de programarse.

En el ejemplo siguiente se muestra cómo utilizar TaskContinuationOptions para especificar que una tarea de continuación debe ejecutarse sincrónicamente cuando se complete la tarea antecedente.(Si ya se ha completado la tarea especificada por el tiempo ContinueWith se llama, sincrónico continuación se ejecutará en el subproceso que llame a ContinueWith.)


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; } }
}

Universal Windows Platform
Disponible desde 4.5
.NET Framework
Disponible desde 4.0
Portable Class Library
Compatible con: portable .NET platforms
Silverlight
Disponible desde 5.0
Windows Phone Silverlight
Disponible desde 8.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: