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, CancellationToken)

.NET Framework (current version)
 

Data di pubblicazione: ottobre 2016

Crea un'attività annullabile 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,
	CancellationToken cancellationToken
)

Parametri

millisecondsDelay
Type: System.Int32

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

cancellationToken
Type: System.Threading.CancellationToken

Token di annullamento che verrà controllato prima del completamento dell'attività restituita.

Valore restituito

Type: System.Threading.Tasks.Task

Attività che rappresenta il ritardo di tempo.

Exception Condition
ArgumentOutOfRangeException

Il millisecondsDelay argomento è minore di -1.

TaskCanceledException

L'attività è stata annullata.

ObjectDisposedException

Provider cancellationToken già eliminato.

Se il token di annullamento viene segnalato prima che l'intervallo di tempo specificato, un TaskCanceledException risultati dell'eccezione e l'attività viene completata nel TaskStatus.Canceled dello stato. In caso contrario, l'attività è stata completata nel TaskStatus.RanToCompletion stato una volta trascorso l'intervallo di tempo specificato.

Per scenari di utilizzo ed esempi aggiuntivi, vedere la documentazione per il Delay(Int32) overload.

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 avviata un'attività che include una chiamata al Delay(Int32, CancellationToken) con un ritardo secondo un metodo. Prima dell'intervallo di ritardo, il token viene annullato. L'output dell'esempio mostra che, di conseguenza, un TaskCanceledException viene generata, le attività e Status è impostata su 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

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: