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.Delay (Método) (Int32)

.NET Framework (current version)
 

Crea una tarea 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
)

Parámetros

millisecondsDelay

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

Valor devuelto

Type: System.Threading.Tasks.Task

Una tarea que representa el retraso.

Exception Condition
ArgumentOutOfRangeException

El millisecondsDelay argumento es menor que -1.

El Delay método se utiliza normalmente para retrasar la operación de todo o parte de una tarea para un intervalo de tiempo especificado.Normalmente, se introduce el retardo de tiempo:

  • En el principio de la tarea, como en el ejemplo siguiente se muestra.

    Stopwatch sw = Stopwatch.StartNew();
    var delay = Task.Delay(1000).ContinueWith(_ =>
                               { sw.Stop();
                                 return sw.ElapsedMilliseconds; } );
    
    Console.WriteLine("Elapsed milliseconds: {0}", delay.Result);
    // The example displays output like the following:
    //        Elapsed milliseconds: 1013
    
  • En algún momento mientras se está ejecutando la tarea.En este caso, la llamada a la Delay método se ejecuta como una tarea secundaria dentro de una tarea, como se muestra en el ejemplo siguiente.Tenga en cuenta que desde la tarea que llama el Delay método se ejecuta de forma asincrónica, la tarea primaria debe esperar a que finalice mediante el uso de la await (palabra clave).

    var delay = Task.Run( async () => { Stopwatch sw = Stopwatch.StartNew();
                                        await Task.Delay(2500);
                                        sw.Stop();
                                        return sw.ElapsedMilliseconds; });
    
    Console.WriteLine("Elapsed milliseconds: {0}", delay.Result);
    // The example displays output like the following:
    //        Elapsed milliseconds: 2501
    

Después del retraso de tiempo especificado, la tarea se completa en el TaskStatus.RanToCompletion estado.

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 sistemas Windows.

En el ejemplo siguiente se muestra un uso simple de la Delay (método).

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      var t = Task.Run(async delegate
              {
                 await Task.Delay(1000);
                 return 42;
              });
      t.Wait();
      Console.WriteLine("Task t Status: {0}, Result: {1}",
                        t.Status, t.Result);
   }
}
// The example displays the following output:
//        Task t Status: RanToCompletion, Result: 42

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