Task.Delay Task.Delay Task.Delay Task.Delay Method

Définition

Crée une tâche qui ne se termine qu'après un certain délai.Creates a task that will complete after a time delay.

Surcharges

Delay(TimeSpan, CancellationToken) Delay(TimeSpan, CancellationToken) Delay(TimeSpan, CancellationToken)

Crée une tâche pouvant être annulée qui se termine après un intervalle de temps spécifié.Creates a cancellable task that completes after a specified time interval.

Delay(Int32, CancellationToken) Delay(Int32, CancellationToken) Delay(Int32, CancellationToken)

Crée une tâche pouvant être annulée qui se termine après un nombre spécifié de millisecondes.Creates a cancellable task that completes after a specified number of milliseconds.

Delay(Int32) Delay(Int32) Delay(Int32) Delay(Int32)

Crée une tâche qui se termine après un nombre spécifié de millisecondes.Creates a task that completes after a specified number of milliseconds.

Delay(TimeSpan) Delay(TimeSpan) Delay(TimeSpan) Delay(TimeSpan)

Crée une tâche qui se termine après un intervalle de temps spécifié.Creates a task that completes after a specified time interval.

Delay(TimeSpan, CancellationToken) Delay(TimeSpan, CancellationToken) Delay(TimeSpan, CancellationToken)

Crée une tâche pouvant être annulée qui se termine après un intervalle de temps spécifié.Creates a cancellable task that completes after a specified time interval.

public:
 static System::Threading::Tasks::Task ^ Delay(TimeSpan delay, System::Threading::CancellationToken cancellationToken);
public static System.Threading.Tasks.Task Delay (TimeSpan delay, System.Threading.CancellationToken cancellationToken);
static member Delay : TimeSpan * System.Threading.CancellationToken -> System.Threading.Tasks.Task

Paramètres

delay
TimeSpan TimeSpan TimeSpan TimeSpan

Intervalle de temps à attendre avant la fin de la tâche retournée ou TimeSpan.FromMilliseconds(-1) pour attendre indéfiniment.The time span to wait before completing the returned task, or TimeSpan.FromMilliseconds(-1) to wait indefinitely.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

Jeton d’annulation à observer en attendant que la tâche se termine.A cancellation token to observe while waiting for the task to complete.

Retours

Tâche qui représente le délai.A task that represents the time delay.

Exceptions

delay représente un intervalle de temps négatif autre que TimeSpan.FromMilliseconds(-1).delay represents a negative time interval other than TimeSpan.FromMilliseconds(-1).

ou-or- La propriété TotalMilliseconds de l’argument delay est supérieure à MaxValue.The delay argument's TotalMilliseconds property is greater than MaxValue.

La tâche a été annulée.The task has been canceled.

Le cancellationToken fourni a déjà été supprimé.The provided cancellationToken has already been disposed.

Exemples

L’exemple suivant lance une tâche qui inclut un appel à la Delay(TimeSpan, CancellationToken) méthode avec un délai de 1,5 secondes.The following example launches a task that includes a call to the Delay(TimeSpan, CancellationToken) method with a 1.5 second delay. Avant que l’intervalle du délai s’écoule, le jeton est annulé.Before the delay interval elapses, the token is cancelled. La sortie de l’exemple montre que, par conséquent, un TaskCanceledException est levée et les tâches Status propriété est définie sur Canceled.The output from the example shows that, as a result, a TaskCanceledException is thrown, and the tasks' Status property is set to 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
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim source As New CancellationTokenSource()
      
      Dim t = Task.Run(Async Function()
                                Await Task.Delay(TimeSpan.FromSeconds(1.5),
                                                 source.Token)
                                Return 42
                       End Function)
      source.Cancel()
      Try
         t.Wait()
      Catch ae As AggregateException
         For Each e In ae.InnerExceptions
            Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message)
         Next
      End Try
      Console.Write("Task t Status: {0}", t.Status)
      If t.Status = TaskStatus.RanToCompletion Then
         Console.Write(", Result: {0}", t.Result)
      End If
      source.Dispose()
   End Sub
End Module
' The example displays output like the following:
'       TaskCanceledException: A task was canceled.
'       Task t Status: Canceled

Notez que cet exemple inclut une condition de concurrence potentielle : elle dépend de la tâche exécute de façon asynchrone le délai lorsque le jeton est annulé.Note that this example includes a potential race condition: it depends on the task asynchronously executing the delay when the token is cancelled. Bien que la seconde 1,5 différer de l’appel à la Delay(TimeSpan, CancellationToken) méthode rend cette hypothèse probable, il est néanmoins possible que l’appel à la Delay(TimeSpan, CancellationToken) méthode peut retourner avant que le jeton est annulé.Although the 1.5 second delay from the call to the Delay(TimeSpan, CancellationToken) method makes that assumption likely, it is nevertheless possible that the call to the Delay(TimeSpan, CancellationToken) method could return before the token is cancelled. Dans ce cas, l’exemple génère la sortie suivante :In that case, the example produces the following output:

Task t Status: RanToCompletion, Result: 42  

Remarques

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 Canceled état.If the cancellation token is signaled before the specified time delay, a TaskCanceledException exception results, and the task is completed in the Canceled state. Sinon, la tâche est terminée dans le RanToCompletion état une fois que le délai spécifié écoulé.Otherwise, the task is completed in the RanToCompletion state once the specified time delay has elapsed.

Pour les scénarios d’utilisation et des exemples supplémentaires, consultez la documentation pour le Delay(Int32) de surcharge.For usage scenarios and additional examples, see the documentation for the Delay(Int32) overload.

Cette méthode dépend de l’horloge système.This method depends on the system clock. Cela signifie que le délai est approximativement égale à la résolution de l’horloge système si le delay argument est inférieure à la résolution de l’horloge système, qui est d’environ 15 millisecondes sur les systèmes Windows.This means that the time delay will approximately equal the resolution of the system clock if the delay argument is less than the resolution of the system clock, which is approximately 15 milliseconds on Windows systems.

Delay(Int32, CancellationToken) Delay(Int32, CancellationToken) Delay(Int32, CancellationToken)

Crée une tâche pouvant être annulée qui se termine après un nombre spécifié de millisecondes.Creates a cancellable task that completes after a specified number of milliseconds.

public:
 static System::Threading::Tasks::Task ^ Delay(int millisecondsDelay, System::Threading::CancellationToken cancellationToken);
public static System.Threading.Tasks.Task Delay (int millisecondsDelay, System.Threading.CancellationToken cancellationToken);
static member Delay : int * System.Threading.CancellationToken -> System.Threading.Tasks.Task

Paramètres

millisecondsDelay
Int32 Int32 Int32 Int32

Nombre de millisecondes à attendre avant la fin de la tâche retournée ou -1 pour attendre indéfiniment.The number of milliseconds to wait before completing the returned task, or -1 to wait indefinitely.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

Jeton d’annulation à observer en attendant que la tâche se termine.A cancellation token to observe while waiting for the task to complete.

Retours

Tâche qui représente le délai.A task that represents the time delay.

Exceptions

L’argument millisecondsDelay est inférieur à -1.The millisecondsDelay argument is less than -1.

La tâche a été annulée.The task has been canceled.

Le cancellationToken fourni a déjà été supprimé.The provided cancellationToken has already been disposed.

Exemples

L’exemple suivant lance une tâche qui inclut un appel à la Delay(Int32, CancellationToken) méthode avec un délai d’une seconde.The following example launches a task that includes a call to the Delay(Int32, CancellationToken) method with a one second delay. Avant que l’intervalle du délai s’écoule, le jeton est annulé.Before the delay interval elapses, the token is cancelled. La sortie de l’exemple montre que, par conséquent, un TaskCanceledException est levée et les tâches Status propriété est définie sur Canceled.The output from the example shows that, as a result, a TaskCanceledException is thrown, and the tasks' Status property is set to 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
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim source As New CancellationTokenSource()
      
      Dim t = Task.Run(Async Function()
                                Await Task.Delay(1000, source.Token)
                                Return 42
                       End Function)
      source.Cancel()
      Try
         t.Wait()
      Catch ae As AggregateException
         For Each e In ae.InnerExceptions
            Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message)
         Next
      End Try
      Console.Write("Task t Status: {0}", t.Status)
      If t.Status = TaskStatus.RanToCompletion Then
         Console.Write(", Result: {0}", t.Result)
      End If
      source.Dispose()
   End Sub
End Module
' The example displays the following output:
'       TaskCanceledException: A task was canceled.
'       Task t Status: Canceled

Remarques

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 Canceled état.If the cancellation token is signaled before the specified time delay, a TaskCanceledException exception results, and the task is completed in the Canceled state. Sinon, la tâche est terminée dans le RanToCompletion état une fois que le délai spécifié écoulé.Otherwise, the task is completed in the RanToCompletion state once the specified time delay has elapsed.

Pour les scénarios d’utilisation et des exemples supplémentaires, consultez la documentation pour le Delay(Int32) de surcharge.For usage scenarios and additional examples, see the documentation for the Delay(Int32) overload.

Cette méthode dépend de l’horloge système.This method depends on the system clock. Cela signifie que le délai est approximativement égale à la résolution de l’horloge système si le millisecondsDelay argument est inférieure à la résolution de l’horloge système, qui est d’environ 15 millisecondes sur les systèmes Windows.This means that the time delay will approximately equal the resolution of the system clock if the millisecondsDelay argument is less than the resolution of the system clock, which is approximately 15 milliseconds on Windows systems.

Delay(Int32) Delay(Int32) Delay(Int32) Delay(Int32)

Crée une tâche qui se termine après un nombre spécifié de millisecondes.Creates a task that completes after a specified number of milliseconds.

public:
 static System::Threading::Tasks::Task ^ Delay(int millisecondsDelay);
public static System.Threading.Tasks.Task Delay (int millisecondsDelay);
static member Delay : int -> System.Threading.Tasks.Task
Public Shared Function Delay (millisecondsDelay As Integer) As Task

Paramètres

millisecondsDelay
Int32 Int32 Int32 Int32

Nombre de millisecondes à attendre avant la fin de la tâche retournée ou -1 pour attendre indéfiniment.The number of milliseconds to wait before completing the returned task, or -1 to wait indefinitely.

Retours

Tâche qui représente le délai.A task that represents the time delay.

Exceptions

L’argument millisecondsDelay est inférieur à -1.The millisecondsDelay argument is less than -1.

Exemples

L’exemple suivant montre une utilisation simple du Delay (méthode).The following example shows a simple use of the Delay method.

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
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t = Task.Run(Async Function()
                                Await Task.Delay(1000)
                                Return 42
                       End Function)
      t.Wait()
      Console.WriteLine("Task t Status: {0}, Result: {1}",
                        t.Status, t.Result)
   End Sub
End Module
' The example displays the following output:
'       Task t Status: RanToCompletion, Result: 42

Remarques

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é.The Delay method is typically used to delay the operation of all or part of a task for a specified time interval. En règle générale, le délai est introduit :Most commonly, the time delay is introduced:

  • Au début de la tâche, comme dans l’exemple suivant montre.At the beginning of the task, as the following example shows.

    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
    
    Dim sw As Stopwatch = Stopwatch.StartNew()
    Dim delay1 = Task.Delay(1000)
    Dim delay2 = delay1.ContinueWith( Function(antecedent)
                            sw.Stop()
                            Return sw.ElapsedMilliseconds
                          End Function)
    
    Console.WriteLine("Elapsed milliseconds: {0}", delay2.Result)
    ' The example displays output like the following:
    '        Elapsed milliseconds: 1013
    
  • Plus tard pendant l’exécution de la tâche.Sometime while the task is executing. Dans ce cas, l’appel à la Delay méthode s’exécute comme une tâche enfant au sein d’une tâche, comme le montre l’exemple suivant.In this case, the call to the Delay method executes as a child task within a task, as the following example shows. 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é.Note that since the task that calls the Delay method executes asynchronously, the parent task must wait for it to complete by using the await keyword.

    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
    
    Dim delay = Task.Run( Async Function()
                             Dim sw As Stopwatch = Stopwatch.StartNew()
                             Await Task.Delay(2500)
                             sw.Stop()
                             Return sw.ElapsedMilliseconds
                          End Function )
    
    Console.WriteLine("Elapsed milliseconds: {0}", delay.Result)
    ' The example displays output like the following:
    '        Elapsed milliseconds: 2501
    

Après le délai imparti, la tâche est terminée dans le RanToCompletion état.After the specified time delay, the task is completed in the RanToCompletion state.

Cette méthode dépend de l’horloge système.This method depends on the system clock. Cela signifie que le délai est approximativement égale à la résolution de l’horloge système si le millisecondsDelay argument est inférieure à la résolution de l’horloge système, qui est d’environ 15 millisecondes sur les systèmes Windows.This means that the time delay will approximately equal the resolution of the system clock if the millisecondsDelay argument is less than the resolution of the system clock, which is approximately 15 milliseconds on Windows systems.

Delay(TimeSpan) Delay(TimeSpan) Delay(TimeSpan) Delay(TimeSpan)

Crée une tâche qui se termine après un intervalle de temps spécifié.Creates a task that completes after a specified time interval.

public:
 static System::Threading::Tasks::Task ^ Delay(TimeSpan delay);
public static System.Threading.Tasks.Task Delay (TimeSpan delay);
static member Delay : TimeSpan -> System.Threading.Tasks.Task
Public Shared Function Delay (delay As TimeSpan) As Task

Paramètres

delay
TimeSpan TimeSpan TimeSpan TimeSpan

Intervalle de temps à attendre avant la fin de la tâche retournée ou TimeSpan.FromMilliseconds(-1) pour attendre indéfiniment.The time span to wait before completing the returned task, or TimeSpan.FromMilliseconds(-1) to wait indefinitely.

Retours

Tâche qui représente le délai.A task that represents the time delay.

Exceptions

delay représente un intervalle de temps négatif autre que TimeSpan.FromMilliseconds(-1).delay represents a negative time interval other than TimeSpan.FromMilliseconds(-1).

ou-or- La propriété TotalMilliseconds de l’argument delay est supérieure à MaxValue.The delay argument's TotalMilliseconds property is greater than MaxValue.

Exemples

L’exemple suivant montre une utilisation simple du Delay (méthode).The following example shows a simple use of the Delay method.

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      var t = Task.Run(async delegate
              {
                 await Task.Delay(TimeSpan.FromSeconds(1.5));
                 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
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t = Task.Run(Async Function()
                                Await Task.Delay(TimeSpan.FromSeconds(1.5))
                                Return 42
                       End Function)
      t.Wait()
      Console.WriteLine("Task t Status: {0}, Result: {1}",
                        t.Status, t.Result)
   End Sub
End Module
' The example displays the following output:
'       Task t Status: RanToCompletion, Result: 42

Remarques

Après le délai imparti, la tâche est terminée dans RanToCompletion état.After the specified time delay, the task is completed in RanToCompletion state.

Pour les scénarios d’utilisation et des exemples supplémentaires, consultez la documentation pour le Delay(Int32) de surcharge.For usage scenarios and additional examples, see the documentation for the Delay(Int32) overload.

Cette méthode dépend de l’horloge système.This method depends on the system clock. Cela signifie que le délai est approximativement égale à la résolution de l’horloge système si le delay argument est inférieure à la résolution de l’horloge système, qui est d’environ 15 millisecondes sur les systèmes Windows.This means that the time delay will approximately equal the resolution of the system clock if the delay argument is less than the resolution of the system clock, which is approximately 15 milliseconds on Windows systems.

S’applique à