Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Task.Delay méthode (TimeSpan, CancellationToken)

.NET Framework (current version)
 

Date de publication : novembre 2016

Crée une tâche pouvant être annulée qui se termine après un intervalle de temps spécifié.

Espace de noms:   System.Threading.Tasks
Assembly:  mscorlib (dans mscorlib.dll)

public static Task Delay(
	TimeSpan delay,
	CancellationToken cancellationToken
)

Paramètres

delay
Type: System.TimeSpan

Intervalle de temps à attendre avant la fin de la tâche retournée ou TimeSpan.FromMilliseconds(-1) pour attendre indéfiniment.

cancellationToken
Type: System.Threading.CancellationToken

Jeton d’annulation qui sera vérifié avant de terminer la tâche retournée.

Valeur de retour

Type: System.Threading.Tasks.Task

Tâche qui représente le délai.

Exception Condition
ArgumentOutOfRangeException

delay représente un intervalle de temps négatif autre que TimeSpan.FromMillseconds(-1).

ou

Le delay l’argument TotalMilliseconds est supérieure à Int32.MaxValue.

TaskCanceledException

La tâche a été annulée.

ObjectDisposedException

Le cancellationToken fourni a déjà été supprimé.

Si le jeton d’annulation est signalé avant le délai spécifié, un TaskCanceledException résultats de l’exception et la tâche est terminée dans le TaskStatus.Canceled état. Dans le cas contraire, la tâche est terminée dans le TaskStatus.RanToCompletion état une fois le délai spécifié écoulé.

Pour les scénarios d’utilisation et des exemples supplémentaires, consultez la documentation pour les Delay(Int32) de surcharge.

Cette méthode dépend de l’horloge système. Cela signifie que le délai est approximativement égale à la résolution de l’horloge système si le delay argument est inférieur à la résolution de l’horloge système, qui est d’environ 15 millisecondes sur les systèmes Windows.

L’exemple suivant lance une tâche qui inclut un appel à la Delay(TimeSpan, CancellationToken) méthode avec et-a-1,5 seconde. Avant que l’intervalle du délai s’écoule, le jeton est annulé. La sortie de l’exemple montre que, par conséquent, un TaskCanceledException est levée et les tâches Status est définie sur 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

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 4.5
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight pour Windows Phone
Disponible depuis 8.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher: