Task.Wait Task.Wait Task.Wait Task.Wait Method

Definition

Wartet, bis der Task die Ausführung abschließt.Waits for the Task to complete execution.

Überlädt

Wait(TimeSpan) Wait(TimeSpan) Wait(TimeSpan) Wait(TimeSpan)

Wartet darauf, dass die Task innerhalb eines angegebenen Zeitintervalls vollständig ausgeführt wird.Waits for the Task to complete execution within a specified time interval.

Wait(Int32, CancellationToken) Wait(Int32, CancellationToken) Wait(Int32, CancellationToken)

Wartet, bis der Task die Ausführung abschließt.Waits for the Task to complete execution. Der Wartevorgang wird beendet, wenn ein Timeoutintervall abläuft oder ein Abbruchtoken abgebrochen wird, bevor die Aufgabe abgeschlossen ist.The wait terminates if a timeout interval elapses or a cancellation token is canceled before the task completes.

Wait(CancellationToken) Wait(CancellationToken) Wait(CancellationToken)

Wartet, bis der Task die Ausführung abschließt.Waits for the Task to complete execution. Der Wartevorgang wird beendet, wenn ein Abbruchtoken abgebrochen wird, bevor die Aufgabe abgeschlossen ist.The wait terminates if a cancellation token is canceled before the task completes.

Wait(Int32) Wait(Int32) Wait(Int32) Wait(Int32)

Wartet darauf, dass die Task innerhalb einer angegebenen Anzahl an Millisekunden vollständig ausgeführt wird.Waits for the Task to complete execution within a specified number of milliseconds.

Wait() Wait() Wait() Wait()

Wartet, bis der Task die Ausführung abschließt.Waits for the Task to complete execution.

Wait(TimeSpan) Wait(TimeSpan) Wait(TimeSpan) Wait(TimeSpan)

Wartet darauf, dass die Task innerhalb eines angegebenen Zeitintervalls vollständig ausgeführt wird.Waits for the Task to complete execution within a specified time interval.

public:
 bool Wait(TimeSpan timeout);
public bool Wait (TimeSpan timeout);
member this.Wait : TimeSpan -> bool
Public Function Wait (timeout As TimeSpan) As Boolean

Parameter

timeout
TimeSpan TimeSpan TimeSpan TimeSpan

Eine TimeSpan-Struktur, die die Anzahl der zu wartenden Millisekunden angibt, oder eine TimeSpan-Struktur, die -1 Millisekunden zum unendlichen Warten angibt.A TimeSpan that represents the number of milliseconds to wait, or a TimeSpan that represents -1 milliseconds to wait indefinitely.

Gibt zurück

true, wenn der Task die Ausführung innerhalb der zugewiesenen Zeit abgeschlossen hat, andernfalls false.true if the Task completed execution within the allotted time; otherwise, false.

Ausnahmen

timeout ist eine negative Zahl ungleich -1 Millisekunden, die ein unendliches Timeout darstellt.timeout is a negative number other than -1 milliseconds, which represents an infinite time-out. - oder - -or- timeout ist größer als MaxValue.timeout is greater than MaxValue.

Der Task wurde abgebrochen.The task was canceled. Die InnerExceptions-Sammlung enthält ein TaskCanceledException-Objekt.The InnerExceptions collection contains a TaskCanceledException object.

- oder - -or- Während der Ausführung des Tasks wurde eine Ausnahme ausgelöst.An exception was thrown during the execution of the task. Die InnerExceptions-Sammlung enthält Informationen zu der Ausnahme bzw. den Ausnahmen.The InnerExceptions collection contains information about the exception or exceptions.

Beispiele

Das folgende Beispiel startet eine Aufgabe, die fünf Millionen zufällige ganzer Zahlen zwischen 0 und 100 generiert und ihrem Mittelwert berechnet.The following example starts a task that generates five million random integers between 0 and 100 and computes their mean. Im Beispiel wird die Wait(TimeSpan) -Methode warten, für die Anwendung innerhalb von 150 Millisekunden abgeschlossen.The example uses the Wait(TimeSpan) method to wait for the application to complete within 150 milliseconds. Wenn die Anwendung normal abgeschlossen wird, zeigt die Aufgabe, die Summe und Mittelwert der zufälligen Zahlen, die sie generiert hat.If the application completes normally, the task displays the sum and mean of the random numbers that it has generated. Wenn das Timeoutintervall abgelaufen ist, zeigt das Beispiel eine Meldung an, bevor er beendet wird.If the timeout interval has elapsed, the example displays a message before it terminates.

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task t = Task.Run( () => {
                            Random rnd = new Random();
                            long sum = 0;
                            int n = 5000000;
                            for (int ctr = 1; ctr <= n; ctr++) {
                               int number = rnd.Next(0, 101);
                               sum += number;
                            }
                            Console.WriteLine("Total:   {0:N0}", sum);
                            Console.WriteLine("Mean:    {0:N2}", sum/n);
                            Console.WriteLine("N:       {0:N0}", n);   
                         } );
     TimeSpan ts = TimeSpan.FromMilliseconds(150);
     if (! t.Wait(ts))
        Console.WriteLine("The timeout interval elapsed.");
   }
}
// The example displays output similar to the following:
//       Total:   50,015,714
//       Mean:    50.02
//       N:       1,000,000
// Or it displays the following output:
//      The timeout interval elapsed.
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t As Task = Task.Run( Sub()
                                   Dim rnd As New Random()
                                   Dim sum As Long
                                   Dim n As Integer = 5000000
                                   For ctr As Integer = 1 To n
                                      Dim number As Integer = rnd.Next(0, 101)
                                      sum += number
                                   Next
                                   Console.WriteLine("Total:   {0:N0}", sum)
                                   Console.WriteLine("Mean:    {0:N2}", sum/n)
                                   Console.WriteLine("N:       {0:N0}", n)   
                                End Sub)
     Dim ts As TimeSpan = TimeSpan.FromMilliseconds(150)
     If Not t.Wait(ts) Then
        Console.WriteLine("The timeout interval elapsed.")
     End If
   End Sub
End Module
' The example displays output similar to the following:
'       Total:   50,015,714
'       Mean:    50.02
'       N:       1,000,000
' Or it displays the following output:
'       The timeout interval elapsed.

Hinweise

Wait(TimeSpan) ist eine Synchronisierungsmethode, die bewirkt, den aufrufenden Thread wartet für die aktuelle Aufgabeninstanz dass abgeschlossen wird, bis eines der folgenden Ereignisse eintritt:Wait(TimeSpan) is a synchronization method that causes the calling thread to wait for the current task instance to complete until one of the following occurs:

  • Der Task erfolgreich abgeschlossen.The task completes successfully.

  • Die eigentliche Aufgabe abgebrochen wird, oder löst eine Ausnahme aus.The task itself is canceled or throws an exception. In diesem Fall behandeln Sie ein AggregateException Ausnahme.In this case, you handle an AggregateException exception. Die AggregateException.InnerExceptions Eigenschaft enthält die Details der Ausnahme oder Ausnahmen.The AggregateException.InnerExceptions property contains details about the exception or exceptions.

  • Das Intervall von definierten timeout abgelaufen ist.The interval defined by timeout elapses. In diesem Fall wird der aktuelle Thread die Ausführung fortgesetzt und die Methode gibt false.In this case, the current thread resumes execution and the method returns false.

Wait(Int32, CancellationToken) Wait(Int32, CancellationToken) Wait(Int32, CancellationToken)

Wartet, bis der Task die Ausführung abschließt.Waits for the Task to complete execution. Der Wartevorgang wird beendet, wenn ein Timeoutintervall abläuft oder ein Abbruchtoken abgebrochen wird, bevor die Aufgabe abgeschlossen ist.The wait terminates if a timeout interval elapses or a cancellation token is canceled before the task completes.

public:
 bool Wait(int millisecondsTimeout, System::Threading::CancellationToken cancellationToken);
public bool Wait (int millisecondsTimeout, System.Threading.CancellationToken cancellationToken);
member this.Wait : int * System.Threading.CancellationToken -> bool

Parameter

millisecondsTimeout
Int32 Int32 Int32 Int32

Die Anzahl von Millisekunden, die gewartet wird, oder Infinite (-1) für Warten ohne Timeout.The number of milliseconds to wait, or Infinite (-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

true, wenn der Task die Ausführung innerhalb der zugewiesenen Zeit abgeschlossen hat, andernfalls false.true if the Task completed execution within the allotted time; otherwise, false.

Ausnahmen

Das cancellationToken wurde abgebrochen.The cancellationToken was canceled.

millisecondsTimeout ist eine negative Zahl, jedoch nicht -1, was einen unbeschränkten Timeout darstellt.millisecondsTimeout is a negative number other than -1, which represents an infinite time-out.

Der Task wurde abgebrochen.The task was canceled. Die InnerExceptions-Sammlung enthält ein TaskCanceledException-Objekt.The InnerExceptions collection contains a TaskCanceledException object.

- oder - -or- Während der Ausführung des Tasks wurde eine Ausnahme ausgelöst.An exception was thrown during the execution of the task. Die InnerExceptions-Sammlung enthält Informationen zu der Ausnahme bzw. den Ausnahmen.The InnerExceptions collection contains information about the exception or exceptions.

Beispiele

Im folgenden Beispiel wird die Wait(Int32, CancellationToken) Methode zum Bereitstellen der sowohl einen Timeoutwert als auch ein Abbruch-token kann das Warten auf den Abschluss einer Aufgabe zu beenden.The following example calls the Wait(Int32, CancellationToken) method to provide both a timeout value and a cancellation token that can end the wait for a task's completion. Ein neuer Thread gestartet und führt die CancelToken -Methode, die angehalten wird, und ruft dann die CancellationTokenSource.Cancel Methode der Abbruchtoken abgebrochen.A new thread is started and executes the CancelToken method, which pauses and then calls the CancellationTokenSource.Cancel method to cancel the cancellation tokens. Ein Task wird dann gestartet und 5 Sekunden lang verzögert.A task is then launched and delays for 5 seconds. Die Wait -Methode wird aufgerufen, um die Task Abschluss gewartet werden soll, und sowohl einen kurzen Timeoutwert und einem Abbruchtoken bereitgestellt wird.The Wait method is then called to wait for the task's completion and is provided both a brief timeout value and a cancellation token.

using System;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      CancellationTokenSource ts = new CancellationTokenSource();
      Thread thread = new Thread(CancelToken);
      thread.Start(ts);

      Task t = Task.Run( () => { Task.Delay(5000).Wait();
                                 Console.WriteLine("Task ended delay...");
                               });
      try {
         Console.WriteLine("About to wait completion of task {0}", t.Id);
         bool result = t.Wait(1510, ts.Token);
         Console.WriteLine("Wait completed normally: {0}", result);
         Console.WriteLine("The task status:  {0:G}", t.Status);
      }
      catch (OperationCanceledException e) {
         Console.WriteLine("{0}: The wait has been canceled. Task status: {1:G}",
                           e.GetType().Name, t.Status);
         Thread.Sleep(4000);
         Console.WriteLine("After sleeping, the task status:  {0:G}", t.Status);
         ts.Dispose();
      }
   }

   private static void CancelToken(Object obj)
   {
      Thread.Sleep(1500);
      Console.WriteLine("Canceling the cancellation token from thread {0}...",
                        Thread.CurrentThread.ManagedThreadId);
      CancellationTokenSource source = obj as CancellationTokenSource;
      if (source != null) source.Cancel();
   }
}
// The example displays output like the following if the wait is canceled by
// the cancellation token:
//    About to wait completion of task 1
//    Canceling the cancellation token from thread 3...
//    OperationCanceledException: The wait has been canceled. Task status: Running
//    Task ended delay...
//    After sleeping, the task status:  RanToCompletion
// The example displays output like the following if the wait is canceled by
// the timeout interval expiring:
//    About to wait completion of task 1
//    Wait completed normally: False
//    The task status:  Running
//    Canceling the cancellation token from thread 3...
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim ts As New CancellationTokenSource()
      Dim thread As New Thread(AddressOf CancelToken)
      thread.Start(ts)

      Dim t As Task = Task.Run( Sub()
                                   Task.Delay(5000).Wait()
                                    Console.WriteLine("Task ended delay...")
                                End Sub)
      Try
         Console.WriteLine("About to wait completion of task {0}", t.Id)
         Dim result As Boolean = t.Wait(1510, ts.Token)
         Console.WriteLine("Wait completed normally: {0}", result)
         Console.WriteLine("The task status:  {0:G}", t.Status)
      Catch e As OperationCanceledException
         Console.WriteLine("{0}: The wait has been canceled. Task status: {1:G}",
                           e.GetType().Name, t.Status)
         Thread.Sleep(4000)
         Console.WriteLine("After sleeping, the task status:  {0:G}", t.Status)
         ts.Dispose()
      End Try
   End Sub

   Private Sub CancelToken(obj As Object)
      Thread.Sleep(1500)
      Console.WriteLine("Canceling the cancellation token from thread {0}...",
                        Thread.CurrentThread.ManagedThreadId)

      If TypeOf obj Is CancellationTokenSource Then
         Dim source As CancellationTokenSource = CType(obj, CancellationTokenSource)
         source.Cancel()
      End If
   End Sub
End Module
' The example displays output like the following if the wait is canceled by
' the cancellation token:
'    About to wait completion of task 1
'    Canceling the cancellation token from thread 3...
'    OperationCanceledException: The wait has been canceled. Task status: Running
'    Task ended delay...
'    After sleeping, the task status:  RanToCompletion
' The example displays output like the following if the wait is canceled by
' the timeout interval expiring:
'    About to wait completion of task 1
'    Wait completed normally: False
'    The task status:  Running
'    Canceling the cancellation token from thread 3...

Beachten Sie, dass die genaue Ausgabe aus dem Beispiel abhängt, ob die Wartezeit aufgrund der Abbruchtoken abgebrochen wurde oder weil das Timeoutintervall abgelaufen.Note that the precise output from the example depends on whether the wait was canceled because of the cancellation token or because the timeout interval elapsed.

Hinweise

Wait(Int32, CancellationToken) ist eine Synchronisierungsmethode, die bewirkt, den aufrufenden Thread wartet für die aktuelle Aufgabeninstanz dass abgeschlossen wird, bis eines der folgenden Ereignisse eintritt:Wait(Int32, CancellationToken) is a synchronization method that causes the calling thread to wait for the current task instance to complete until one of the following occurs:

  • Der Task erfolgreich abgeschlossen.The task completes successfully.

  • Die eigentliche Aufgabe abgebrochen wird, oder löst eine Ausnahme aus.The task itself is canceled or throws an exception. In diesem Fall behandeln Sie ein AggregateException Ausnahme.In this case, you handle an AggregateException exception. Die AggregateException.InnerExceptions Eigenschaft enthält die Details der Ausnahme oder Ausnahmen.The AggregateException.InnerExceptions property contains details about the exception or exceptions.

  • Die cancellationToken Abbruchtoken wird abgebrochen.The cancellationToken cancellation token is canceled. In diesem Fall ist der Aufruf der Wait(Int32, CancellationToken) -Methode löst eine OperationCanceledException.In this case, the call to the Wait(Int32, CancellationToken) method throws an OperationCanceledException.

  • Das Intervall von definierten millisecondsTimeout abgelaufen ist.The interval defined by millisecondsTimeout elapses. In diesem Fall wird der aktuelle Thread die Ausführung fortgesetzt und die Methode gibt false.In this case, the current thread resumes execution and the method returns false.

Hinweis

Abbrechen der cancellationToken Abbruchtoken hat keine Auswirkungen auf die ausgeführte Aufgabe aus, es sei denn, es auch das Abbruchtoken übergeben wurde und einen Abbruch behandeln vorbereitet ist.Canceling the cancellationToken cancellation token has no effect on the running task unless it has also been passed the cancellation token and is prepared to handle cancellation. Übergeben der cancellationToken Objekt, das diese Methode einfach die Möglichkeit des Wartevorgang abgebrochen werden basierend auf einer Bedingung.Passing the cancellationToken object to this method simply allows the wait to be canceled based on some condition.

Wait(CancellationToken) Wait(CancellationToken) Wait(CancellationToken)

Wartet, bis der Task die Ausführung abschließt.Waits for the Task to complete execution. Der Wartevorgang wird beendet, wenn ein Abbruchtoken abgebrochen wird, bevor die Aufgabe abgeschlossen ist.The wait terminates if a cancellation token is canceled before the task completes.

public:
 void Wait(System::Threading::CancellationToken cancellationToken);
public void Wait (System.Threading.CancellationToken cancellationToken);
member this.Wait : System.Threading.CancellationToken -> unit

Parameter

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.

Ausnahmen

Das cancellationToken wurde abgebrochen.The cancellationToken was canceled.

Der Task wurde abgebrochen.The task was canceled. Die InnerExceptions-Sammlung enthält ein TaskCanceledException-Objekt.The InnerExceptions collection contains a TaskCanceledException object.

- oder - -or- Während der Ausführung des Tasks wurde eine Ausnahme ausgelöst.An exception was thrown during the execution of the task. Die InnerExceptions-Sammlung enthält Informationen zu der Ausnahme bzw. den Ausnahmen.The InnerExceptions collection contains information about the exception or exceptions.

Beispiele

Das folgende Beispiel veranschaulicht die einfache Verwendung von ein Abbruchtoken, das zum Warten auf den Abschluss einer Aufgabe abbrechen.The following example illustrates the simple use of a cancellation token to cancel waiting for a task's completion. Eine Aufgabe gestartet wird, ruft der CancellationTokenSource.Cancel Methode, um der Tokenquelle Abbruchtoken und Verzögerungen bei der fünf Sekunden abgebrochen.A task is launched, calls the CancellationTokenSource.Cancel method to cancel any of the token source's cancellation tokens, and then delays for five seconds. Beachten Sie, dass die eigentliche Aufgabe nicht das Abbruchtoken übergeben wurde und kann nicht abgebrochen werden.Note that the task itself has not been passed the cancellation token and is not cancelable. Thread der Anwendung Aufrufen des Vorgangs Task.Wait -Methode warten, bis die Aufgabe abgeschlossen, aber der Wartevorgang abgebrochen wird, sobald das Abbruchtoken abgebrochen wird, und ein OperationCanceledException ausgelöst.The application thread calls the task's Task.Wait method to wait for the task to complete, but the wait is canceled once the cancellation token is cancelled and an OperationCanceledException is thrown. Der Ausnahmehandler über die Ausnahme, und klicken Sie dann auf sechs Sekunden wartet.The exception handler reports the exception and then sleeps for six seconds. Wie die Ausgabe des Beispiels zeigt, können Sie diese Verzögerung im Abschluss die Aufgabe die RanToCompletion Zustand.As the output from the example shows, that delay allows the task to complete in the RanToCompletion state.

using System;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      CancellationTokenSource ts = new CancellationTokenSource();

      Task t = Task.Run( () => { Console.WriteLine("Calling Cancel...");
                                 ts.Cancel();
                                 Task.Delay(5000).Wait();
                                 Console.WriteLine("Task ended delay...");
                               });
      try {
         Console.WriteLine("About to wait for the task to complete...");
         t.Wait(ts.Token);
      }
      catch (OperationCanceledException e) {
         Console.WriteLine("{0}: The wait has been canceled. Task status: {1:G}",
                           e.GetType().Name, t.Status);
         Thread.Sleep(6000);
         Console.WriteLine("After sleeping, the task status:  {0:G}", t.Status);
      }
      ts.Dispose();
   }
}
// The example displays output like the following:
//    About to wait for the task to complete...
//    Calling Cancel...
//    OperationCanceledException: The wait has been canceled. Task status: Running
//    Task ended delay...
//    After sleeping, the task status:  RanToCompletion
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim ts As New CancellationTokenSource()

      Dim t = Task.Run( Sub()
                           Console.WriteLine("Calling Cancel...")
                           ts.Cancel()
                           Task.Delay(5000).Wait()
                           Console.WriteLine("Task ended delay...")
                        End Sub)
      Try
         Console.WriteLine("About to wait for the task to complete...")
         t.Wait(ts.Token)
      Catch e As OperationCanceledException
         Console.WriteLine("{0}: The wait has been canceled. Task status: {1:G}",
                           e.GetType().Name, t.Status)
         Thread.Sleep(6000)
         Console.WriteLine("After sleeping, the task status:  {0:G}", t.Status)
      End Try
      ts.Dispose()
   End Sub
End Module
' The example displays output like the following:
'    About to wait for the task to complete...
'    Calling Cancel...
'    OperationCanceledException: The wait has been canceled. Task status: Running
'    Task ended delay...
'    After sleeping, the task status:  RanToCompletion

Hinweise

Die Wait(CancellationToken) -Methode erstellt einen Wartevorgang abgebrochen werden; d. h. er bewirkt, dass den aktuellen Thread wartet, bis eine der folgenden Bedingungen zutrifft:The Wait(CancellationToken) method creates a cancelable wait; that is, it causes the current thread to wait until one of the following occurs:

Hinweis

Abbrechen der cancellationToken Abbruchtoken hat keine Auswirkungen auf die ausgeführte Aufgabe aus, es sei denn, es auch das Abbruchtoken übergeben wurde und einen Abbruch behandeln vorbereitet ist.Canceling the cancellationToken cancellation token has no effect on the running task unless it has also been passed the cancellation token and is prepared to handle cancellation. Übergeben der cancellationToken Objekt an diese Methode kann einfach den Wartevorgang abgebrochen werden soll.Passing the cancellationToken object to this method simply allows the wait to be canceled.

Wait(Int32) Wait(Int32) Wait(Int32) Wait(Int32)

Wartet darauf, dass die Task innerhalb einer angegebenen Anzahl an Millisekunden vollständig ausgeführt wird.Waits for the Task to complete execution within a specified number of milliseconds.

public:
 bool Wait(int millisecondsTimeout);
public bool Wait (int millisecondsTimeout);
member this.Wait : int -> bool
Public Function Wait (millisecondsTimeout As Integer) As Boolean

Parameter

millisecondsTimeout
Int32 Int32 Int32 Int32

Die Anzahl von Millisekunden, die gewartet wird, oder Infinite (-1) für Warten ohne Timeout.The number of milliseconds to wait, or Infinite (-1) to wait indefinitely.

Gibt zurück

true, wenn der Task die Ausführung innerhalb der zugewiesenen Zeit abgeschlossen hat, andernfalls false.true if the Task completed execution within the allotted time; otherwise, false.

Ausnahmen

millisecondsTimeout ist eine negative Zahl, jedoch nicht -1, was einen unbeschränkten Timeout darstellt.millisecondsTimeout is a negative number other than -1, which represents an infinite time-out.

Der Task wurde abgebrochen.The task was canceled. Die InnerExceptions-Sammlung enthält ein TaskCanceledException-Objekt.The InnerExceptions collection contains a TaskCanceledException object.

- oder - -or- Während der Ausführung des Tasks wurde eine Ausnahme ausgelöst.An exception was thrown during the execution of the task. Die InnerExceptions-Sammlung enthält Informationen zu der Ausnahme bzw. den Ausnahmen.The InnerExceptions collection contains information about the exception or exceptions.

Beispiele

Das folgende Beispiel startet eine Aufgabe, die fünf Millionen zufällige ganzer Zahlen zwischen 0 und 100 generiert und ihrem Mittelwert berechnet.The following example starts a task that generates five million random integers between 0 and 100 and computes their mean. Im Beispiel wird die Wait(Int32) -Methode warten, für die Anwendung innerhalb von 150 Millisekunden abgeschlossen.The example uses the Wait(Int32) method to wait for the application to complete within 150 milliseconds. Wenn die Anwendung normal abgeschlossen wird, zeigt die Aufgabe, die Summe und Mittelwert der zufälligen Zahlen, die sie generiert hat.If the application completes normally, the task displays the sum and mean of the random numbers that it has generated. Wenn das Timeoutintervall abgelaufen ist, zeigt das Beispiel eine Meldung an, bevor er beendet wird.If the timeout interval has elapsed, the example displays a message before it terminates.

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task t = Task.Run( () => {
                            Random rnd = new Random();
                            long sum = 0;
                            int n = 5000000;
                            for (int ctr = 1; ctr <= n; ctr++) {
                               int number = rnd.Next(0, 101);
                               sum += number;
                            }
                            Console.WriteLine("Total:   {0:N0}", sum);
                            Console.WriteLine("Mean:    {0:N2}", sum/n);
                            Console.WriteLine("N:       {0:N0}", n);   
                         } );
     if (! t.Wait(150))
        Console.WriteLine("The timeout interval elapsed.");
   }
}
// The example displays output similar to the following:
//       Total:   50,015,714
//       Mean:    50.02
//       N:       1,000,000
// Or it displays the following output:
//      The timeout interval elapsed.
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t As Task = Task.Run( Sub()
                                   Dim rnd As New Random()
                                   Dim sum As Long
                                   Dim n As Integer = 5000000
                                   For ctr As Integer = 1 To n
                                      Dim number As Integer = rnd.Next(0, 101)
                                      sum += number
                                   Next
                                   Console.WriteLine("Total:   {0:N0}", sum)
                                   Console.WriteLine("Mean:    {0:N2}", sum/n)
                                   Console.WriteLine("N:       {0:N0}", n)   
                                End Sub)
     If Not t.Wait(150) Then
        Console.WriteLine("The timeout interval elapsed.")
     End If
   End Sub
End Module
' The example displays output similar to the following:
'       Total:   50,015,714
'       Mean:    50.02
'       N:       1,000,000
' Or it displays the following output:
'       The timeout interval elapsed.

Hinweise

Wait(Int32) ist eine Synchronisierungsmethode, die bewirkt, den aufrufenden Thread wartet für die aktuelle Aufgabeninstanz dass abgeschlossen wird, bis eines der folgenden Ereignisse eintritt:Wait(Int32) is a synchronization method that causes the calling thread to wait for the current task instance to complete until one of the following occurs:

  • Der Task erfolgreich abgeschlossen.The task completes successfully.

  • Die eigentliche Aufgabe abgebrochen wird, oder löst eine Ausnahme aus.The task itself is canceled or throws an exception. In diesem Fall behandeln Sie ein AggregateException Ausnahme.In this case, you handle an AggregateException exception. Die AggregateException.InnerExceptions Eigenschaft enthält die Details der Ausnahme oder Ausnahmen.The AggregateException.InnerExceptions property contains details about the exception or exceptions.

  • Das Intervall von definierten millisecondsTimeout abgelaufen ist.The interval defined by millisecondsTimeout elapses. In diesem Fall wird der aktuelle Thread die Ausführung fortgesetzt und die Methode gibt false.In this case, the current thread resumes execution and the method returns false.

Wait() Wait() Wait() Wait()

Wartet, bis der Task die Ausführung abschließt.Waits for the Task to complete execution.

public:
 void Wait();
public void Wait ();
member this.Wait : unit -> unit
Public Sub Wait ()

Ausnahmen

Der Task wurde abgebrochen.The task was canceled. Die InnerExceptions-Sammlung enthält ein TaskCanceledException-Objekt.The InnerExceptions collection contains a TaskCanceledException object.

- oder - -or- Während der Ausführung des Tasks wurde eine Ausnahme ausgelöst.An exception was thrown during the execution of the task. Die InnerExceptions-Sammlung enthält Informationen zu der Ausnahme bzw. den Ausnahmen.The InnerExceptions collection contains information about the exception or exceptions.

Beispiele

Das folgende Beispiel startet eine Aufgabe, die eine Million zufällige ganze Zahlen zwischen 0 und 100 generiert und ihrem Mittelwert berechnet.The following example starts a task that generates one million random integers between 0 and 100 and computes their mean. Im Beispiel wird die Wait Methode, um sicherzustellen, dass die Aufgabe abgeschlossen ist, bevor die Anwendung beendet wird.The example uses the Wait method to ensure that the task completes before the application terminates. Da es sich um eine Konsolenanwendung handelt, würde andernfalls im Beispiel beendet, bevor die Aufgabe zu berechnen und den Mittelwert anzeigen kann.Otherwise, because this is a console application, the example would terminate before the task can compute and display the mean.

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task t = Task.Run( () => {
                            Random rnd = new Random();
                            long sum = 0;
                            int n = 1000000;
                            for (int ctr = 1; ctr <= n; ctr++) {
                               int number = rnd.Next(0, 101);
                               sum += number;
                            }
                            Console.WriteLine("Total:   {0:N0}", sum);
                            Console.WriteLine("Mean:    {0:N2}", sum/n);
                            Console.WriteLine("N:       {0:N0}", n);   
                         } );
     t.Wait();
   }
}
// The example displays output similar to the following:
//       Total:   50,015,714
//       Mean:    50.02
//       N:       1,000,000
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t As Task = Task.Run( Sub()
                                   Dim rnd As New Random()
                                   Dim sum As Long
                                   Dim n As Integer = 1000000
                                   For ctr As Integer = 1 To n
                                      Dim number As Integer = rnd.Next(0, 101)
                                      sum += number
                                   Next
                                   Console.WriteLine("Total:   {0:N0}", sum)
                                   Console.WriteLine("Mean:    {0:N2}", sum/n)
                                   Console.WriteLine("N:       {0:N0}", n)   
                                End Sub)
     t.Wait()
   End Sub
End Module
' The example displays output similar to the following:
'       Total:   50,015,714
'       Mean:    50.02
'       N:       1,000,000

Hinweise

Wait ist eine Synchronisierungsmethode, die bewirkt, dass den aufrufenden Thread wartet, bis der aktuelle Task abgeschlossen ist.Wait is a synchronization method that causes the calling thread to wait until the current task has completed. Wenn die Ausführung nicht von die aktuelle Aufgabe gestartet wurde, versucht die Wait-Methode entfernen Sie die Aufgabe vom Planer, und führen Sie es Inline für den aktuellen Thread.If the current task has not started execution, the Wait method attempts to remove the task from the scheduler and execute it inline on the current thread. Wenn dies möglich ist, oder wenn die Ausführung in die aktuelle Aufgabe bereits gestartet wurde, er den aufrufenden Thread, blockiert bis die Aufgabe abgeschlossen ist.If it is unable to do that, or if the current task has already started execution, it blocks the calling thread until the task completes. Weitere Informationen finden Sie unter "Task.Wait" und "Inlining" im zur parallelen Programmierung mit .NET Blog.For more information, see Task.Wait and "Inlining" in the Parallel Programming with .NET blog.

Siehe auch

Gilt für: