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 (Int32)

.NET Framework (current version)
 

Date de publication : novembre 2016

Crée une tâche qui se termine après un certain délai.

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

public static Task Delay(
	int millisecondsDelay
)

Paramètres

millisecondsDelay
Type: System.Int32

Nombre de millisecondes à attendre avant la fin de la tâche retournée ou -1 pour attendre indéfiniment.

Valeur de retour

Type: System.Threading.Tasks.Task

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

Exception Condition
ArgumentOutOfRangeException

Le millisecondsDelay argument est inférieur à -1.

Le Delay méthode est généralement utilisée pour retarder le fonctionnement de tous les ou une partie d’une tâche pour un intervalle de temps spécifié. En règle générale, le délai est introduit :

  • Au début de la tâche, comme l’exemple suivant affiche.

    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
    
  • Alors que la tâche s’exécute. Dans ce cas, l’appel à la Delay méthode exécute une tâche enfant au sein d’une tâche, comme le montre l’exemple suivant. Notez que depuis la tâche qui appelle le Delay méthode s’exécute de façon asynchrone, la tâche parente doit attendre qu’elle se termine à l’aide de la await (mot clé).

    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
    

Après le délai spécifié, la tâche est terminée dans le TaskStatus.RanToCompletion état.

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 millisecondsDelay 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 montre une utilisation simple de la Delay méthode.

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

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: