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.Delay (Int32, CancellationToken)

.NET Framework (current version)
 

Publicado: octubre de 2016

Crea una tarea cancelable que se completa después de un retraso.

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

public static Task Delay(
	int millisecondsDelay,
	CancellationToken cancellationToken
)

Parámetros

millisecondsDelay
Type: System.Int32

El número de milisegundos que se esperará antes de completar la tarea devuelta o -1 para esperar indefinidamente.

cancellationToken
Type: System.Threading.CancellationToken

El token de cancelación que se comprobará antes de completar la tarea devuelta.

Valor devuelto

Type: System.Threading.Tasks.Task

Una tarea que representa el retraso.

Exception Condition
ArgumentOutOfRangeException

El millisecondsDelay argumento es menor que -1.

TaskCanceledException

La tarea se canceló.

ObjectDisposedException

Ya se eliminó el cancellationToken proporcionado.

Si el token de cancelación se señala antes el retardo de tiempo especificado, un TaskCanceledException resultados de la excepción y la tarea completada en la TaskStatus.Canceled estado. De lo contrario, se completa la tarea en el TaskStatus.RanToCompletion estado cuando ha transcurrido el intervalo de tiempo especificado.

Para escenarios de uso y ejemplos adicionales, consulte la documentación de la Delay(Int32) de sobrecarga.

Este método depende del reloj del sistema. Esto significa que el tiempo de retardo aproximadamente igual la resolución del reloj del sistema si el millisecondsDelay argumento es menor que la resolución del reloj del sistema, que es aproximadamente 15 milisegundos en los sistemas Windows.

En el ejemplo siguiente se inicia una tarea que incluye una llamada a la Delay(Int32, CancellationToken) método con un un retraso segundo. Antes de que transcurra el intervalo de demora, se cancela el token. El resultado del ejemplo muestra que, como resultado, un TaskCanceledException se inicia y las tareas Status propiedad está establecida en TaskStatus.Canceled.

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

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

      var t = Task.Run(async delegate
              {
                 await Task.Delay(1000, source.Token);
                 return 42;
              });
      source.Cancel();
      try {
         t.Wait();
      }
      catch (AggregateException ae) {
         foreach (var e in ae.InnerExceptions)
            Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message);
      }
      Console.Write("Task t Status: {0}", t.Status);
      if (t.Status == TaskStatus.RanToCompletion)
         Console.Write(", Result: {0}", t.Result);
      source.Dispose();
   }
}
// The example displays the following output:
//       TaskCanceledException: A task was canceled.
//       Task t Status: Canceled

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