Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Task.Delay (Int32)

.NET Framework (current version)
 

Data di pubblicazione: ottobre 2016

Crea un'attività che viene completata dopo un ritardo di tempo.

Spazio dei nomi:   System.Threading.Tasks
Assembly:  mscorlib (in mscorlib.dll)

public static Task Delay(
	int millisecondsDelay
)

Parametri

millisecondsDelay
Type: System.Int32

Numero di millisecondi prima del completamento dell'attività restituita oppure -1 per un'attesa indefinita.

Valore restituito

Type: System.Threading.Tasks.Task

Attività che rappresenta il ritardo di tempo.

Exception Condition
ArgumentOutOfRangeException

Il millisecondsDelay argomento è minore di -1.

Il Delay metodo viene in genere utilizzato per ritardare l'operazione di tutti o parte di un'attività per un intervallo di tempo specificato. In genere, è stato introdotto l'intervallo di tempo:

  • AT l'inizio dell'attività, come nell'esempio seguente viene illustrato.

    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
    
  • Un intervallo di tempo durante l'esecuzione di attività. In questo caso, la chiamata al Delay metodo viene eseguito come attività figlio all'interno di un'attività, come illustrato nell'esempio seguente. Si noti che dopo l'attività che chiama il Delay metodo viene eseguito in modo asincrono, l'attività padre deve attendere il completamento tramite il await (parola chiave).

    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
    

Dopo il ritardo di tempo specificato, l'attività viene completata nel TaskStatus.RanToCompletion dello stato.

Questo metodo dipende dall'orologio di sistema. Ciò significa che l'intervallo di tempo sarà pari circa la risoluzione del clock di sistema se la millisecondsDelay argomento è minore rispetto alla risoluzione del clock di sistema, è di circa 15 millisecondi nei sistemi Windows.

Nell'esempio seguente viene illustrato un utilizzo semplice di Delay metodo.

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
Disponibile da 8
.NET Framework
Disponibile da 4.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Windows Phone Silverlight
Disponibile da 8.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: