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

Definition

Erstellt eine Aufgabe, die nach einer Verzögerung abgeschlossen wird.Creates a task that will complete after a time delay.

Überlädt

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

Erstellt eine abzubrechende Aufgabe, die nach Ablauf einer festgelegten Zeitspanne abgeschlossen wird.Creates a cancellable task that completes after a specified time interval.

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

Erstellt eine stornierbare Aufgabe, die nach Ablauf einer festgelegten Anzahl an Millisekunden abgeschlossen wird.Creates a cancellable task that completes after a specified number of milliseconds.

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

Erstellt eine Aufgabe, die nach Ablauf einer festgelegten Anzahl an Millisekunden abgeschlossen wird.Creates a task that completes after a specified number of milliseconds.

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

Erstellt eine Aufgabe, die nach Ablauf einer festgelegten Zeitspanne abgeschlossen wird.Creates a task that completes after a specified time interval.

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

Erstellt eine abzubrechende Aufgabe, die nach Ablauf einer festgelegten Zeitspanne abgeschlossen wird.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

Parameter

delay
TimeSpan TimeSpan TimeSpan TimeSpan

Die Zeitspanne, die abgewartet werden soll, bevor die zurückgegebene Aufgabe abgeschlossen wird, oder TimeSpan.FromMilliseconds(-1), um unbegrenzt zu warten.The time span to wait before completing the returned task, or TimeSpan.FromMilliseconds(-1) to wait indefinitely.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

Ein Abbruchtoken, das beim Warten auf den Abschluss der Aufgabe überwacht werden soll.A cancellation token to observe while waiting for the task to complete.

Gibt zurück

Eine Aufgabe, die die Verzögerung darstellt.A task that represents the time delay.

Ausnahmen

delay stellt ein negatives Zeitintervall ungleich TimeSpan.FromMilliseconds(-1) dar.delay represents a negative time interval other than TimeSpan.FromMilliseconds(-1).

- oder --or- Die delay der TotalMilliseconds-Eigenschaft des Arguments ist größer als MaxValue.The delay argument's TotalMilliseconds property is greater than MaxValue.

Die Aufgabe wurde abgebrochen.The task has been canceled.

Das angegebene cancellationToken wurde bereits verworfen.The provided cancellationToken has already been disposed.

Beispiele

Im folgenden Beispiel wird ein Task gestartet, der einen aufzurufenden Delay(TimeSpan, CancellationToken)-Methode mit einer Verzögerung von 1,5 Sekunden enthält.The following example launches a task that includes a call to the Delay(TimeSpan, CancellationToken) method with a 1.5 second delay. Bevor das Verzögerungs Intervall abläuft, wird das Token abgebrochen.Before the delay interval elapses, the token is cancelled. Die Ausgabe des Beispiels zeigt, dass als Ergebnis eine TaskCanceledException ausgelöst wird und die Status-Eigenschaft der Tasks auf Canceled festgelegt ist.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

Beachten Sie, dass dieses Beispiel eine potenzielle Racebedingung umfasst: Es hängt von der Aufgabe ab, die die Verzögerung asynchron ausführt, wenn das Token abgebrochen wird.Note that this example includes a potential race condition: it depends on the task asynchronously executing the delay when the token is cancelled. Obwohl bei der 1,5-Sekunden-Verzögerung des Aufrufes der Delay(TimeSpan, CancellationToken)-Methode diese Annahme wahrscheinlich ist, kann es vorkommen, dass der Delay(TimeSpan, CancellationToken)-Methode aufgerufen werden kann, bevor das Token abgebrochen wird.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. In diesem Fall erzeugt das Beispiel die folgende Ausgabe:In that case, the example produces the following output:

Task t Status: RanToCompletion, Result: 42  

Hinweise

Wenn das Abbruch Token vor der angegebenen Zeitverzögerung signalisiert wird, führt dies zu einer TaskCanceledException-Ausnahme, und die Aufgabe wird im Status Canceled abgeschlossen.If the cancellation token is signaled before the specified time delay, a TaskCanceledException exception results, and the task is completed in the Canceled state. Andernfalls wird die Aufgabe im Zustand "RanToCompletion" abgeschlossen, sobald die angegebene Zeitverzögerung verstrichen ist.Otherwise, the task is completed in the RanToCompletion state once the specified time delay has elapsed.

Verwendungs Szenarien und zusätzliche Beispiele finden Sie in der Dokumentation für die Delay(Int32)-Überladung.For usage scenarios and additional examples, see the documentation for the Delay(Int32) overload.

Diese Methode hängt von der Systemuhr ab.This method depends on the system clock. Dies bedeutet, dass die Verzögerung ungefähr gleich der Auflösung der Systemuhr ist, wenn das Argument "delay" kleiner als die Auflösung der Systemuhr ist, was ungefähr 15 Millisekunden auf Windows-Systemen liegt.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)

Erstellt eine stornierbare Aufgabe, die nach Ablauf einer festgelegten Anzahl an Millisekunden abgeschlossen wird.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

Parameter

millisecondsDelay
Int32 Int32 Int32 Int32

Die Anzahl von Millisekunden, die gewartet wird, bevor die zurückgegebene Aufgabe abgeschlossen wird, oder -1, um unbegrenzt zu warten.The number of milliseconds to wait before completing the returned task, or -1 to wait indefinitely.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

Ein Abbruchtoken, das beim Warten auf den Abschluss der Aufgabe überwacht werden soll.A cancellation token to observe while waiting for the task to complete.

Gibt zurück

Eine Aufgabe, die die Verzögerung darstellt.A task that represents the time delay.

Ausnahmen

Das millisecondsDelay-Argument ist kleiner als -1.The millisecondsDelay argument is less than -1.

Die Aufgabe wurde abgebrochen.The task has been canceled.

Das angegebene cancellationToken wurde bereits verworfen.The provided cancellationToken has already been disposed.

Beispiele

Im folgenden Beispiel wird eine Aufgabe gestartet, die einen-Aufrufvorgang der Delay(Int32, CancellationToken)-Methode mit einer Verzögerung von einer Sekunde einschließt.The following example launches a task that includes a call to the Delay(Int32, CancellationToken) method with a one second delay. Bevor das Verzögerungs Intervall abläuft, wird das Token abgebrochen.Before the delay interval elapses, the token is cancelled. Die Ausgabe des Beispiels zeigt, dass als Ergebnis eine TaskCanceledException ausgelöst wird und die Status-Eigenschaft der Tasks auf Canceled festgelegt ist.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

Hinweise

Wenn das Abbruch Token vor der angegebenen Zeitverzögerung signalisiert wird, führt dies zu einer TaskCanceledException-Ausnahme, und die Aufgabe wird im Status Canceled abgeschlossen.If the cancellation token is signaled before the specified time delay, a TaskCanceledException exception results, and the task is completed in the Canceled state. Andernfalls wird die Aufgabe im Zustand "RanToCompletion" abgeschlossen, sobald die angegebene Zeitverzögerung verstrichen ist.Otherwise, the task is completed in the RanToCompletion state once the specified time delay has elapsed.

Verwendungs Szenarien und zusätzliche Beispiele finden Sie in der Dokumentation für die Delay(Int32)-Überladung.For usage scenarios and additional examples, see the documentation for the Delay(Int32) overload.

Diese Methode hängt von der Systemuhr ab.This method depends on the system clock. Dies bedeutet, dass die Verzögerung ungefähr gleich der Auflösung der Systemuhr ist, wenn das Argument "millisecondsDelay" kleiner als die Auflösung der Systemuhr ist, was ungefähr 15 Millisekunden auf Windows-Systemen liegt.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)

Erstellt eine Aufgabe, die nach Ablauf einer festgelegten Anzahl an Millisekunden abgeschlossen wird.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

Parameter

millisecondsDelay
Int32 Int32 Int32 Int32

Die Anzahl von Millisekunden, die gewartet wird, bevor die zurückgegebene Aufgabe abgeschlossen wird, oder -1, um unbegrenzt zu warten.The number of milliseconds to wait before completing the returned task, or -1 to wait indefinitely.

Gibt zurück

Eine Aufgabe, die die Verzögerung darstellt.A task that represents the time delay.

Ausnahmen

Das millisecondsDelay-Argument ist kleiner als -1.The millisecondsDelay argument is less than -1.

Beispiele

Das folgende Beispiel zeigt eine einfache Verwendung der Delay-Methode.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

Hinweise

Die Delay-Methode wird normalerweise verwendet, um den Vorgang eines gesamten oder eines Teils einer Aufgabe für ein bestimmtes Zeitintervall zu verzögern.The Delay method is typically used to delay the operation of all or part of a task for a specified time interval. In den meisten Fällen wird die Zeitverzögerung eingeführt:Most commonly, the time delay is introduced:

  • Zu Beginn der Aufgabe, wie im folgenden Beispiel gezeigt.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
    
  • Einige Zeit, während die Aufgabe ausgeführt wird.Sometime while the task is executing. In diesem Fall wird der Delay-Methode als untergeordnete Aufgabe innerhalb einer Aufgabe ausgeführt, wie im folgenden Beispiel gezeigt.In this case, the call to the Delay method executes as a child task within a task, as the following example shows. Beachten Sie Folgendes: da die Aufgabe, die die Delay-Methode aufruft, asynchron ausgeführt wird, muss die übergeordnete Aufgabe auf den Abschluss mit dem Schlüsselwort await warten.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
    

Nach der angegebenen Zeitverzögerung wird die Aufgabe im Zustand "RanToCompletion" abgeschlossen.After the specified time delay, the task is completed in the RanToCompletion state.

Diese Methode hängt von der Systemuhr ab.This method depends on the system clock. Dies bedeutet, dass die Verzögerung ungefähr gleich der Auflösung der Systemuhr ist, wenn das Argument "millisecondsDelay" kleiner als die Auflösung der Systemuhr ist, was ungefähr 15 Millisekunden auf Windows-Systemen liegt.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)

Erstellt eine Aufgabe, die nach Ablauf einer festgelegten Zeitspanne abgeschlossen wird.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

Parameter

delay
TimeSpan TimeSpan TimeSpan TimeSpan

Die Zeitspanne, die abgewartet werden soll, bevor die zurückgegebene Aufgabe abgeschlossen wird, oder TimeSpan.FromMilliseconds(-1), um unbegrenzt zu warten.The time span to wait before completing the returned task, or TimeSpan.FromMilliseconds(-1) to wait indefinitely.

Gibt zurück

Eine Aufgabe, die die Verzögerung darstellt.A task that represents the time delay.

Ausnahmen

delay stellt ein negatives Zeitintervall ungleich TimeSpan.FromMilliseconds(-1) dar.delay represents a negative time interval other than TimeSpan.FromMilliseconds(-1).

- oder --or- Die delay der TotalMilliseconds-Eigenschaft des Arguments ist größer als MaxValue.The delay argument's TotalMilliseconds property is greater than MaxValue.

Beispiele

Das folgende Beispiel zeigt eine einfache Verwendung der Delay-Methode.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

Hinweise

Nach der angegebenen Zeitverzögerung wird die Aufgabe in RanToCompletion-Status abgeschlossen.After the specified time delay, the task is completed in RanToCompletion state.

Verwendungs Szenarien und zusätzliche Beispiele finden Sie in der Dokumentation für die Delay(Int32)-Überladung.For usage scenarios and additional examples, see the documentation for the Delay(Int32) overload.

Diese Methode hängt von der Systemuhr ab.This method depends on the system clock. Dies bedeutet, dass die Verzögerung ungefähr gleich der Auflösung der Systemuhr ist, wenn das Argument "delay" kleiner als die Auflösung der Systemuhr ist, was ungefähr 15 Millisekunden auf Windows-Systemen liegt.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.

Gilt für: