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

.NET Framework (current version)
 

Data di pubblicazione: novembre 2016

Crea un'attività annullabile che viene completata dopo un intervallo di tempo specificato.

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

public static Task Delay(
	TimeSpan delay,
	CancellationToken cancellationToken
)

Parametri

delay
Type: System.TimeSpan

Intervallo di tempo da attendere prima del completamento dell'attività restituita oppure TimeSpan.FromMilliseconds(-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

delay rappresenta un intervallo di tempo negativo diverso da TimeSpan.FromMillseconds(-1).

-oppure-

Il delay dell'argomento TotalMilliseconds proprietà è maggiore di Int32.MaxValue.

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 delay 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(TimeSpan, CancellationToken) metodo con un ritardo di un e-mezzo secondo. 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(TimeSpan.FromSeconds(1.5), 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 output like the following:
//       TaskCanceledException: A task was canceled.
//       Task t Status: Canceled

Note that this example includes a potential race condition: it depends on the task asynchronously executing the delay when the token is cancelled. Although the 1.5 second delay from the call to the M:System.Threading.Tasks.Task.Delay(System.TimeSpan,System.Threading.CancellationToken) method makes that assumption likely, it is nevertheless possible that the call to the M:System.Threading.Tasks.Task.Delay(System.TimeSpan,System.Threading.CancellationToken) method could return before the token is cancelled. In that case, the example produces 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: