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

Método Task.Wait (CancellationToken)

 

Publicado: julio de 2016

Espera a que se complete la ejecución del objeto Task. La espera finalizará si un token de cancelación se cancela antes de que finalice la tarea.

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

public void Wait(
	CancellationToken cancellationToken
)

Parámetros

cancellationToken
Type: System.Threading.CancellationToken

Un token de cancelación que se observará mientras se espera a que se complete la tarea.

Exception Condition
OperationCanceledException

cancellationToken se canceló.

ObjectDisposedException

Se ha desechado la tarea.

AggregateException

Se canceló la tarea. La colección AggregateException.InnerExceptions contiene un objeto TaskCanceledException.

-o-

Se inició una excepción durante la ejecución de la tarea. La colección AggregateException.InnerExceptions contiene información sobre la excepción o excepciones.

El Wait(CancellationToken) método crea una espera puede cancelarse; es decir, hace que el subproceso actual esperar hasta que se produce uno de los siguientes valores:

  • La tarea se complete.

  • El token de cancelación se cancela. En este caso, la llamada a la Wait(CancellationToken) método produce un OperationCanceledException.

System_CAPS_noteNota

Cancelar la cancellationToken token de cancelación no tiene ningún efecto en la tarea en ejecución a menos que también se ha pasado el token de cancelación y está preparado para administrar su cancelación. Pasar la cancellationToken objeto a este método simplemente permite la espera se cancele.

En el ejemplo siguiente se muestra el uso simple de un token de cancelación para cancelar esperar la finalización de una tarea. Una tarea se inicia, se llama a la CancellationTokenSource.Cancel método cancelar cualquiera del origen de token tokens de cancelación y, a continuación, retrasos durante cinco segundos. Tenga en cuenta que la propia tarea no se ha pasado el token de cancelación y no puede cancelar. El subproceso de la aplicación llama a la tarea Task.Wait método para esperar a que complete la tarea, pero la espera se cancela una vez que se cancela el token de cancelación y un OperationCanceledException se produce. El controlador de excepciones notifica la excepción y, a continuación, se suspende durante seis segundos. Como se muestra en el resultado del ejemplo, ese retraso permite que la tarea se complete en el TaskStatus.RanToCompletion estado.

using System;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      CancellationTokenSource ts = new CancellationTokenSource();

      Task t = Task.Run( () => { Console.WriteLine("Calling Cancel...");
                                 ts.Cancel();
                                 Task.Delay(5000).Wait();
                                 Console.WriteLine("Task ended delay...");
                               });
      try {
         Console.WriteLine("About to wait for the task to complete...");
         t.Wait(ts.Token);
      }
      catch (OperationCanceledException e) {
         Console.WriteLine("{0}: The wait has been canceled. Task status: {1:G}",
                           e.GetType().Name, t.Status);
         Thread.Sleep(6000);
         Console.WriteLine("After sleeping, the task status:  {0:G}", t.Status);
      }
      ts.Dispose();
   }
}
// The example displays output like the following:
//    About to wait for the task to complete...
//    Calling Cancel...
//    OperationCanceledException: The wait has been canceled. Task status: Running
//    Task ended delay...
//    After sleeping, the task status:  RanToCompletion

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 4.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 5.0
Windows Phone Silverlight
Disponible desde 8.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: