Task.Wait Methode

Definition

Wartet, bis der Task die Ausführung abschließt.

Überlädt

Wait(TimeSpan)

Wartet darauf, dass die Task innerhalb eines angegebenen Zeitintervalls vollständig ausgeführt wird.

Wait(Int32, CancellationToken)

Wartet, bis der Task die Ausführung abschließt. Der Wartevorgang wird beendet, wenn ein Timeoutintervall abläuft oder ein Abbruchtoken abgebrochen wird, bevor die Aufgabe abgeschlossen ist.

Wait(CancellationToken)

Wartet, bis der Task die Ausführung abschließt. Der Wartevorgang wird beendet, wenn ein Abbruchtoken abgebrochen wird, bevor die Aufgabe abgeschlossen ist.

Wait(TimeSpan, CancellationToken)

Wartet, bis der Task die Ausführung abschließt.

Wait()

Wartet, bis der Task die Ausführung abschließt.

Wait(Int32)

Wartet darauf, dass die Task innerhalb einer angegebenen Anzahl an Millisekunden vollständig ausgeführt wird.

Wait(TimeSpan)

Wartet darauf, dass die Task innerhalb eines angegebenen Zeitintervalls vollständig ausgeführt wird.

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

Eine TimeSpan-Struktur, die die Anzahl der zu wartenden Millisekunden angibt, oder eine TimeSpan-Struktur, die -1 Millisekunden zum unendlichen Warten angibt.

Gibt zurück

Boolean

true, wenn der Task die Ausführung innerhalb der zugewiesenen Zeit abgeschlossen hat, andernfalls false.

Ausnahmen

Task wurde verworfen.

timeout ist eine negative Zahl ungleich -1 Millisekunden, die ein unendliches Timeout darstellt. - oder - timeout ist größer als Int32.MaxValue.

Der Task wurde abgebrochen. Die InnerExceptions-Sammlung enthält ein TaskCanceledException-Objekt.

  • oder - Während der Ausführung des Tasks wurde eine Ausnahme ausgelöst. Die InnerExceptions-Sammlung enthält Informationen zu der Ausnahme bzw. den Ausnahmen.

Beispiele

Im folgenden Beispiel wird eine Aufgabe gestartet, die fünf Millionen zufällige Ganzzahlen zwischen 0 und 100 generiert und deren Mittel berechnet. Im Beispiel wird die Wait(TimeSpan) Methode verwendet, um auf die Ausführung der Anwendung innerhalb von 150 Millisekunden zu warten. Wenn die Anwendung normalerweise abgeschlossen ist, zeigt der Vorgang die Summe und das Mittel der zufälligen Zahlen an, die sie generiert hat. Wenn das Timeoutintervall abgelaufen ist, zeigt das Beispiel eine Nachricht an, bevor es beendet wird.

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 die aktuelle Vorgangsinstanz wartet, bis eine der folgenden Aktionen auftritt:

  • Die Aufgabe wird erfolgreich abgeschlossen.

  • Die Aufgabe selbst wird abgebrochen oder löst eine Ausnahme aus. In diesem Fall behandeln Sie eine AggregateException Ausnahme. Die AggregateException.InnerExceptions Eigenschaft enthält Details zu Ausnahme oder Ausnahmen.

  • Das durch timeout Verstriche definierte Intervall. In diesem Fall wird die Ausführung des aktuellen Threads fortgesetzt, und die Methode wird zurückgegeben false.

Gilt für:

Wait(Int32, CancellationToken)

Wartet, bis der Task die Ausführung abschließt. Der Wartevorgang wird beendet, wenn ein Timeoutintervall abläuft oder ein Abbruchtoken abgebrochen wird, bevor die Aufgabe abgeschlossen ist.

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
Public Function Wait (millisecondsTimeout As Integer, cancellationToken As CancellationToken) As Boolean

Parameter

millisecondsTimeout
Int32

Die Anzahl von Millisekunden, die gewartet wird, oder Infinite (-1) für Warten ohne Timeout.

cancellationToken
CancellationToken

Ein Abbruchtoken, das beim Warten auf den Abschluss der Aufgabe überwacht werden soll.

Gibt zurück

Boolean

true, wenn der Task die Ausführung innerhalb der zugewiesenen Zeit abgeschlossen hat, andernfalls false.

Ausnahmen

Das cancellationToken wurde abgebrochen.

Task wurde verworfen.

millisecondsTimeout ist eine negative Zahl, jedoch nicht -1, was einen unbeschränkten Timeout darstellt.

Der Task wurde abgebrochen. Die InnerExceptions-Sammlung enthält ein TaskCanceledException-Objekt.

  • oder - Während der Ausführung des Tasks wurde eine Ausnahme ausgelöst. Die InnerExceptions-Sammlung enthält Informationen zu der Ausnahme bzw. den Ausnahmen.

Beispiele

Im folgenden Beispiel wird die Wait(Int32, CancellationToken) Methode aufgerufen, um sowohl einen Timeoutwert als auch ein Abbruchtoken bereitzustellen, das die Wartezeit für den Abschluss eines Vorgangs beenden kann. Ein neuer Thread wird gestartet und führt die CancelToken Methode aus, die angehalten wird und dann die Methode aufruft, um die CancellationTokenSource.Cancel Abbruchtoken abzubrechen. Eine Aufgabe wird dann für 5 Sekunden gestartet und verzögert. Die Wait Methode wird dann aufgerufen, um auf den Abschluss des Vorgangs zu warten und sowohl einen kurzen Timeoutwert als auch ein Abbruchtoken bereitgestellt.

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 davon abhängt, ob die Wartezeit aufgrund des Abbruchtokens abgebrochen wurde oder weil das Timeoutintervall abgelaufen ist.

Hinweise

Wait(Int32, CancellationToken) ist eine Synchronisierungsmethode, die bewirkt, dass der aufrufende Thread auf die aktuelle Vorgangsinstanz wartet, bis eine der folgenden Aktionen auftritt:

  • Die Aufgabe wird erfolgreich abgeschlossen.

  • Die Aufgabe selbst wird abgebrochen oder löst eine Ausnahme aus. In diesem Fall behandeln Sie eine AggregateException Ausnahme. Die AggregateException.InnerExceptions Eigenschaft enthält Details zu Ausnahme oder Ausnahmen.

  • Das cancellationToken Abbruchtoken wird abgebrochen. In diesem Fall löst der Aufruf der Wait(Int32, CancellationToken) Methode eine OperationCanceledException.

  • Das durch millisecondsTimeout Verstriche definierte Intervall. In diesem Fall wird die Ausführung des aktuellen Threads fortgesetzt, und die Methode wird zurückgegeben false.

Hinweis

Das Abbrechen des cancellationToken Abbruchtokens wirkt sich nicht auf den ausgeführten Vorgang aus, es sei denn, es wurde auch das Abbruchtoken übergeben und ist bereit, abzubrechen. Durch Das Übergeben des cancellationToken Objekts an diese Methode ermöglicht es einfach, dass die Wartezeit aufgrund einiger Bedingung abgebrochen werden kann.

Gilt für:

Wait(CancellationToken)

Wartet, bis der Task die Ausführung abschließt. Der Wartevorgang wird beendet, wenn ein Abbruchtoken abgebrochen wird, bevor die Aufgabe abgeschlossen ist.

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

Parameter

cancellationToken
CancellationToken

Ein Abbruchtoken, das beim Warten auf den Abschluss der Aufgabe überwacht werden soll.

Ausnahmen

Das cancellationToken wurde abgebrochen.

Die Aufgabe wurde verworfen.

Der Task wurde abgebrochen. Die InnerExceptions-Sammlung enthält ein TaskCanceledException-Objekt.

  • oder - Während der Ausführung des Tasks wurde eine Ausnahme ausgelöst. Die InnerExceptions-Sammlung enthält Informationen zu der Ausnahme bzw. den Ausnahmen.

Beispiele

Im folgenden Beispiel wird die einfache Verwendung eines Abbruchtokens veranschaulicht, um den Abschluss einer Aufgabe abzubrechen. Eine Aufgabe wird gestartet, ruft die CancellationTokenSource.Cancel Methode auf, um die Abbruchtoken der Tokenquelle abzubrechen, und verzögert sich dann für fünf Sekunden. Beachten Sie, dass die Aufgabe selbst nicht das Abbruchtoken übergeben wurde und nicht abgebrochen werden kann. Der Anwendungsthread ruft die Methode des Vorgangs Task.Wait auf, bis die Aufgabe abgeschlossen ist, aber die Wartezeit wird abgebrochen, sobald das Abbruchtoken abgebrochen wird und eine OperationCanceledException ausgelöst wird. Der Ausnahmehandler meldet die Ausnahme und wird dann für sechs Sekunden geschlafen. Wie die Ausgabe aus dem Beispiel zeigt, ermöglicht die Verzögerung, dass die Aufgabe im RanToCompletion Zustand abgeschlossen werden kann.

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 eine abbruchbare Wartezeit. Das heißt, es führt dazu, dass der aktuelle Thread warten kann, bis eine der folgenden Aktionen auftritt:

Hinweis

Das Abbrechen des cancellationToken Abbruchtokens wirkt sich nicht auf den ausgeführten Vorgang aus, es sei denn, es wurde auch das Abbruchtoken übergeben und ist bereit, abzubrechen. Durch das Übergeben des cancellationToken Objekts an diese Methode kann die Wartezeit einfach abgebrochen werden.

Gilt für:

Wait(TimeSpan, CancellationToken)

Wartet, bis der Task die Ausführung abschließt.

public:
 bool Wait(TimeSpan timeout, System::Threading::CancellationToken cancellationToken);
public bool Wait (TimeSpan timeout, System.Threading.CancellationToken cancellationToken);
member this.Wait : TimeSpan * System.Threading.CancellationToken -> bool
Public Function Wait (timeout As TimeSpan, cancellationToken As CancellationToken) As Boolean

Parameter

timeout
TimeSpan

Die Zeit, bis sie warten oder InfiniteTimeSpan auf unbestimmte Zeit warten

cancellationToken
CancellationToken

A CancellationToken , um während des Wartens auf die Aufgabe zu beobachten, die abgeschlossen werden soll.

Gibt zurück

Boolean

true, wenn der Task die Ausführung innerhalb der zugewiesenen Zeit abgeschlossen hat, andernfalls false.

Ausnahmen

Dies Task wurde abgebrochen.

Oder

Eine Ausnahme wurde während der Ausführung der Task.

timeout ist eine andere negative Zahl als -1 Millisekunden, die einen unendlichen Timeout darstellt

Oder

Timeout ist größer als MaxValue.

Das cancellationToken wurde abgebrochen.

Gilt für:

Wait()

Wartet, bis der Task die Ausführung abschließt.

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

Ausnahmen

Task wurde verworfen.

Der Task wurde abgebrochen. Die InnerExceptions-Sammlung enthält ein TaskCanceledException-Objekt.

  • oder - Während der Ausführung des Tasks wurde eine Ausnahme ausgelöst. Die InnerExceptions-Sammlung enthält Informationen zu der Ausnahme bzw. den Ausnahmen.

Beispiele

Im folgenden Beispiel wird eine Aufgabe gestartet, die zwischen 0 und 100 zufällige Ganzzahlen generiert und deren Mittelwert berechnet. Im Beispiel wird die Wait Methode verwendet, um sicherzustellen, dass die Aufgabe abgeschlossen wird, bevor die Anwendung beendet wird. Andernfalls würde das Beispiel beendet, bevor die Aufgabe den Mittelwert berechnen und anzeigen kann, da es sich um eine Konsolenanwendung handelt.

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 warten kann, bis die aktuelle Aufgabe abgeschlossen ist. Wenn die aktuelle Aufgabe die Ausführung nicht gestartet hat, versucht die Wait-Methode, den Vorgang aus dem Zeitplaner zu entfernen und es inline im aktuellen Thread auszuführen. Wenn die Ausführung des aktuellen Vorgangs nicht möglich ist oder die Ausführung des aktuellen Vorgangs bereits gestartet wurde, blockiert er den aufrufenden Thread, bis die Aufgabe abgeschlossen ist. Weitere Informationen finden Sie unter Task.Wait und "Inlining" im Parallel Programming with .NET Blog.

Siehe auch

Gilt für:

Wait(Int32)

Wartet darauf, dass die Task innerhalb einer angegebenen Anzahl an Millisekunden vollständig ausgeführt wird.

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

Die Anzahl von Millisekunden, die gewartet wird, oder Infinite (-1) für Warten ohne Timeout.

Gibt zurück

Boolean

true, wenn der Task die Ausführung innerhalb der zugewiesenen Zeit abgeschlossen hat, andernfalls false.

Ausnahmen

Task wurde verworfen.

millisecondsTimeout ist eine negative Zahl, jedoch nicht -1, was einen unbeschränkten Timeout darstellt.

Der Task wurde abgebrochen. Die InnerExceptions-Sammlung enthält ein TaskCanceledException-Objekt.

  • oder - Während der Ausführung des Tasks wurde eine Ausnahme ausgelöst. Die InnerExceptions-Sammlung enthält Informationen zu der Ausnahme bzw. den Ausnahmen.

Beispiele

Im folgenden Beispiel wird eine Aufgabe gestartet, die fünf Millionen zufällige Ganzzahlen zwischen 0 und 100 generiert und deren Mittel berechnet. Im Beispiel wird die Wait(Int32) Methode verwendet, um auf die Ausführung der Anwendung innerhalb von 150 Millisekunden zu warten. Wenn die Anwendung normalerweise abgeschlossen ist, zeigt der Vorgang die Summe und das Mittel der zufälligen Zahlen an, die sie generiert hat. Wenn das Timeoutintervall abgelaufen ist, zeigt das Beispiel eine Nachricht an, bevor es beendet wird.

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 die aktuelle Vorgangsinstanz wartet, bis eine der folgenden Aktionen auftritt:

  • Die Aufgabe wird erfolgreich abgeschlossen.

  • Die Aufgabe selbst wird abgebrochen oder löst eine Ausnahme aus. In diesem Fall behandeln Sie eine AggregateException Ausnahme. Die AggregateException.InnerExceptions Eigenschaft enthält Details zur Ausnahme oder Ausnahmen.

  • Das durch millisecondsTimeout Verstriche definierte Intervall. In diesem Fall setzt der aktuelle Thread die Ausführung fort, und die Methode gibt zurück false.

Gilt für: