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

Im folgenden Beispiel wird eine Aufgabe gestartet, die 5 Millionen Random Integer zwischen 0 und 100 generiert und ihren 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 verwendet, um auf den Abschluss der Anwendung innerhalb von 150 Millisekunden zu warten.The example uses the Wait(TimeSpan) method to wait for the application to complete within 150 milliseconds. Wenn die Anwendung normal abgeschlossen ist, zeigt die Aufgabe die Summe und den Mittelwert der Zufallszahlen an, 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 Timeout Intervall abgelaufen ist, wird im Beispiel eine Meldung angezeigt, bevor Sie 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, dass der aufrufende Thread auf den Abschluss der aktuellen Aufgaben Instanz wartet, bis eine der folgenden Aktionen auftritt: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 wurde erfolgreich abgeschlossen.The task completes successfully.

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

  • Das durch timeout definierte Intervall läuft ab.The interval defined by timeout elapses. In diesem Fall wird die Ausführung des aktuellen Threads fortgesetzt, und die Methode gibt false zurück.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 aufgerufen, um sowohl einen Timeout Wert als auch ein Abbruch Token bereitzustellen, das das warten auf den Abschluss einer Aufgabe beenden kann.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 wird gestartet und führt die CancelToken-Methode aus, die angehalten wird, und ruft dann die CancellationTokenSource.Cancel-Methode auf, um die Abbruch Token abzubrechen.A new thread is started and executes the CancelToken method, which pauses and then calls the CancellationTokenSource.Cancel method to cancel the cancellation tokens. Anschließend wird ein Task gestartet und der Vorgang um 5 Sekunden verzögert.A task is then launched and delays for 5 seconds. Die Wait-Methode wird aufgerufen, um auf den Abschluss der Aufgabe zu warten, und wird sowohl einen kurzen Timeout Wert als auch ein Abbruch Token bereitgestellt.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 des Beispiels davon abhängt, ob der Warte Vorgang aufgrund des Abbruch Tokens abgebrochen wurde oder weil das Timeout Intervall abgelaufen ist.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, dass der aufrufende Thread auf den Abschluss der aktuellen Aufgaben Instanz wartet, bis eine der folgenden Aktionen auftritt: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 wurde erfolgreich abgeschlossen.The task completes successfully.

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

  • Das cancellationToken-Abbruch Token wird abgebrochen.The cancellationToken cancellation token is canceled. In diesem Fall löst der aufzurufende Wait(Int32, CancellationToken)-Methode eine OperationCanceledException aus.In this case, the call to the Wait(Int32, CancellationToken) method throws an OperationCanceledException.

  • Das durch millisecondsTimeout definierte Intervall läuft ab.The interval defined by millisecondsTimeout elapses. In diesem Fall wird die Ausführung des aktuellen Threads fortgesetzt, und die Methode gibt false zurück.In this case, the current thread resumes execution and the method returns false.

Hinweis

Das Abbrechen des cancellationToken-Abbruch Tokens hat keine Auswirkung auf die laufende Aufgabe, es sei denn, es wurde auch das Abbruch Token übergeben und ist für die Behandlung von Abbruch vorbereitet.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. Wenn Sie das cancellationToken-Objekt an diese Methode übergeben, kann der Warte Vorgang auf der Grundlage einer Bedingung einfach abgebrochen werden.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 eines Abbruch Tokens, um das warten auf den Abschluss einer Aufgabe abzubrechen.The following example illustrates the simple use of a cancellation token to cancel waiting for a task's completion. Ein Task wird gestartet, ruft die CancellationTokenSource.Cancel-Methode auf, um die Abbruch Token der tokenquelle abzubrechen und dann fünf Sekunden lang zu Verzögerungen.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 der Aufgabe selbst nicht das Abbruch Token übergeben wurde und nicht abgebrochen werden kann.Note that the task itself has not been passed the cancellation token and is not cancelable. Der Anwendungs Thread ruft die Task.Wait-Methode der Aufgabe auf, um auf den Abschluss der Aufgabe zu warten. der Warte Vorgang wird jedoch abgebrochen, sobald das Abbruch Token abgebrochen und ein OperationCanceledException ausgelöst wird.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 meldet die Ausnahme und wird sechs Sekunden lang in den Ruhezustand versetzt.The exception handler reports the exception and then sleeps for six seconds. Wie die Ausgabe des Beispiels zeigt, ermöglicht diese Verzögerung die Fertigstellung der Aufgabe im Zustand "RanToCompletion".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 Abbruch, der abgebrochen werden kann. Das heißt, dass der aktuelle Thread wartet, bis eine der folgenden Aktionen auftritt:The Wait(CancellationToken) method creates a cancelable wait; that is, it causes the current thread to wait until one of the following occurs:

Hinweis

Das Abbrechen des cancellationToken-Abbruch Tokens hat keine Auswirkung auf die laufende Aufgabe, es sei denn, es wurde auch das Abbruch Token übergeben und ist für die Behandlung von Abbruch vorbereitet.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. Wenn Sie das cancellationToken-Objekt an diese Methode übergeben, kann die Wartezeit lediglich abgebrochen werden.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

Im folgenden Beispiel wird eine Aufgabe gestartet, die 5 Millionen Random Integer zwischen 0 und 100 generiert und ihren 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 verwendet, um auf den Abschluss der Anwendung innerhalb von 150 Millisekunden zu warten.The example uses the Wait(Int32) method to wait for the application to complete within 150 milliseconds. Wenn die Anwendung normal abgeschlossen ist, zeigt die Aufgabe die Summe und den Mittelwert der Zufallszahlen an, 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 Timeout Intervall abgelaufen ist, wird im Beispiel eine Meldung angezeigt, bevor Sie 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, dass der aufrufende Thread auf den Abschluss der aktuellen Aufgaben Instanz wartet, bis eine der folgenden Aktionen auftritt: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 wurde erfolgreich abgeschlossen.The task completes successfully.

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

  • Das durch millisecondsTimeout definierte Intervall läuft ab.The interval defined by millisecondsTimeout elapses. In diesem Fall wird die Ausführung des aktuellen Threads fortgesetzt, und die Methode gibt false zurück.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

Im folgenden Beispiel wird eine Aufgabe gestartet, die 1 Million Random Integer zwischen 0 und 100 generiert und ihren 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 verwendet, 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 hierbei um eine Konsolenanwendung handelt, wird das Beispiel beendet, bevor die Aufgabe den Mittelwert berechnen und 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 der aufrufende Thread wartet, bis die aktuelle Aufgabe abgeschlossen ist.Wait is a synchronization method that causes the calling thread to wait until the current task has completed. Wenn die Ausführung der aktuellen Aufgabe nicht gestartet wurde, versucht die Wait-Methode, die Aufgabe aus dem Scheduler zu entfernen und Sie Inline im aktuellen Thread auszuführen.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 nicht möglich ist, oder wenn die Ausführung der aktuellen Aufgabe bereits begonnen hat, wird der aufrufende 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 Blog zur parallelen Programmierung mit .net.For more information, see Task.Wait and "Inlining" in the Parallel Programming with .NET blog.

Siehe auch

Gilt für: