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

Definición

Espera a que se complete la ejecución del objeto Task.Waits for the Task to complete execution.

Sobrecargas

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

Espera a que Task complete la ejecución dentro de un intervalo de tiempo especificado.Waits for the Task to complete execution within a specified time interval.

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

Espera a que se complete la ejecución del objeto Task.Waits for the Task to complete execution. La espera finalizará si transcurre un intervalo de tiempo de espera o un token de cancelación se cancela antes de que finalice la tarea.The wait terminates if a timeout interval elapses or a cancellation token is canceled before the task completes.

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

Espera a que se complete la ejecución del objeto Task.Waits for the Task to complete execution. La espera finalizará si un token de cancelación se cancela antes de que finalice la tarea.The wait terminates if a cancellation token is canceled before the task completes.

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

Espera a que el objeto Task complete la ejecución dentro de un número especificado de milisegundos.Waits for the Task to complete execution within a specified number of milliseconds.

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

Espera a que se complete la ejecución del objeto Task.Waits for the Task to complete execution.

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

Espera a que Task complete la ejecución dentro de un intervalo de tiempo especificado.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

Parámetros

timeout
TimeSpan TimeSpan TimeSpan TimeSpan

Estructura TimeSpan que representa el número de milisegundos de espera o estructura TimeSpan que representa -1 milisegundos para esperar indefinidamente.A TimeSpan that represents the number of milliseconds to wait, or a TimeSpan that represents -1 milliseconds to wait indefinitely.

Devoluciones

true si Task completó su ejecución en el tiempo asignado; en caso contrario, false.true if the Task completed execution within the allotted time; otherwise, false.

Excepciones

timeout es un número negativo distinto de -1 milisegundos, que representa un tiempo de espera infinito.timeout is a negative number other than -1 milliseconds, which represents an infinite time-out. -o bien--or- timeout es mayor que MaxValue.timeout is greater than MaxValue.

Se canceló la tarea.The task was canceled. La colección InnerExceptions contiene un objeto TaskCanceledException.The InnerExceptions collection contains a TaskCanceledException object.

-o bien--or- Se inició una excepción durante la ejecución de la tarea.An exception was thrown during the execution of the task. La colección InnerExceptions contiene información sobre la excepción o excepciones.The InnerExceptions collection contains information about the exception or exceptions.

Ejemplos

El ejemplo siguiente inicia una tarea que genera cinco millones de enteros aleatorios entre 0 y 100 y calcula su Media.The following example starts a task that generates five million random integers between 0 and 100 and computes their mean. El ejemplo se usa el Wait(TimeSpan) método para esperar a la aplicación completa en 150 milisegundos.The example uses the Wait(TimeSpan) method to wait for the application to complete within 150 milliseconds. Si la aplicación se completa con normalidad, la tarea muestra la suma y promedio de los números aleatorios que ha generado.If the application completes normally, the task displays the sum and mean of the random numbers that it has generated. Si ha transcurrido el intervalo de tiempo de espera, en el ejemplo se muestra un mensaje antes de finalizar.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.

Comentarios

Wait(TimeSpan) es un método de sincronización que hace que el subproceso que realiza la llamada debe esperar para que la instancia actual de la tarea en completarse hasta que se produzca uno de los siguientes: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:

  • La tarea se completa correctamente.The task completes successfully.

  • La propia tarea se cancela o produce una excepción.The task itself is canceled or throws an exception. En este caso, controla un AggregateException excepción.In this case, you handle an AggregateException exception. El AggregateException.InnerExceptions propiedad contiene información detallada sobre la excepción o excepciones.The AggregateException.InnerExceptions property contains details about the exception or exceptions.

  • El intervalo definido por timeout transcurre.The interval defined by timeout elapses. En este caso, reanuda la ejecución del subproceso actual y devuelve el método false.In this case, the current thread resumes execution and the method returns false.

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

Espera a que se complete la ejecución del objeto Task.Waits for the Task to complete execution. La espera finalizará si transcurre un intervalo de tiempo de espera o un token de cancelación se cancela antes de que finalice la tarea.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

Parámetros

millisecondsTimeout
Int32 Int32 Int32 Int32

Número de milisegundos de espera o Infinite (-1) para esperar indefinidamente.The number of milliseconds to wait, or Infinite (-1) to wait indefinitely.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

Un token de cancelación que se observará mientras se espera a que se complete la tarea.A cancellation token to observe while waiting for the task to complete.

Devoluciones

true si Task completó su ejecución en el tiempo asignado; en caso contrario, false.true if the Task completed execution within the allotted time; otherwise, false.

Excepciones

cancellationToken se canceló.The cancellationToken was canceled.

millisecondsTimeout es un número negativo distinto de-1, que representa un tiempo de espera infinito.millisecondsTimeout is a negative number other than -1, which represents an infinite time-out.

Se canceló la tarea.The task was canceled. La colección InnerExceptions contiene un objeto TaskCanceledException.The InnerExceptions collection contains a TaskCanceledException object.

-o bien--or- Se inició una excepción durante la ejecución de la tarea.An exception was thrown during the execution of the task. La colección InnerExceptions contiene información sobre la excepción o excepciones.The InnerExceptions collection contains information about the exception or exceptions.

Ejemplos

El ejemplo siguiente se llama el Wait(Int32, CancellationToken) método para proporcionar un valor de tiempo de espera y una cancelación de tokens que puede finalizar la espera para la finalización de la tarea.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. Un nuevo subproceso se inicia y ejecuta el CancelToken método, que pone en pausa y, a continuación, llama a la CancellationTokenSource.Cancel método para cancelar los tokens de cancelación.A new thread is started and executes the CancelToken method, which pauses and then calls the CancellationTokenSource.Cancel method to cancel the cancellation tokens. Una tarea es, a continuación, se inicia y se retrasa durante 5 segundos.A task is then launched and delays for 5 seconds. El Wait método, a continuación, se llama para esperar la finalización de la tarea y se proporciona un valor de tiempo de espera breve y un token de cancelación.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...

Tenga en cuenta que el resultado del ejemplo preciso depende de si se ha cancelado por el token de cancelación o porque el intervalo de tiempo de espera transcurrido.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.

Comentarios

Wait(Int32, CancellationToken) es un método de sincronización que hace que el subproceso que realiza la llamada debe esperar para que la instancia actual de la tarea en completarse hasta que se produzca uno de los siguientes: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:

  • La tarea se completa correctamente.The task completes successfully.

  • La propia tarea se cancela o produce una excepción.The task itself is canceled or throws an exception. En este caso, controla un AggregateException excepción.In this case, you handle an AggregateException exception. El AggregateException.InnerExceptions propiedad contiene información detallada sobre la excepción o excepciones.The AggregateException.InnerExceptions property contains details about the exception or exceptions.

  • El cancellationToken se cancela el token de cancelación.The cancellationToken cancellation token is canceled. En este caso, la llamada a la Wait(Int32, CancellationToken) método produce una OperationCanceledException.In this case, the call to the Wait(Int32, CancellationToken) method throws an OperationCanceledException.

  • El intervalo definido por millisecondsTimeout transcurre.The interval defined by millisecondsTimeout elapses. En este caso, reanuda la ejecución del subproceso actual y devuelve el método false.In this case, the current thread resumes execution and the method returns false.

Nota

Cancelando la cancellationToken token de cancelación no tiene ningún efecto en la tarea en ejecución a menos que también se ha pasado el token de cancelación y está preparado para controlar la cancelación.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. Pasar el cancellationToken objeto a este método simplemente permite la espera para cancelarse en función de alguna condición.Passing the cancellationToken object to this method simply allows the wait to be canceled based on some condition.

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

Espera a que se complete la ejecución del objeto Task.Waits for the Task to complete execution. La espera finalizará si un token de cancelación se cancela antes de que finalice la tarea.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

Parámetros

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

Un token de cancelación que se observará mientras se espera a que se complete la tarea.A cancellation token to observe while waiting for the task to complete.

Excepciones

cancellationToken se canceló.The cancellationToken was canceled.

Se canceló la tarea.The task was canceled. La colección InnerExceptions contiene un objeto TaskCanceledException.The InnerExceptions collection contains a TaskCanceledException object.

-o bien--or- Se inició una excepción durante la ejecución de la tarea.An exception was thrown during the execution of the task. La colección InnerExceptions contiene información sobre la excepción o excepciones.The InnerExceptions collection contains information about the exception or exceptions.

Ejemplos

En el ejemplo siguiente se ilustra el uso de un token de cancelación para cancelar la espera para la finalización de una tarea sencillo.The following example illustrates the simple use of a cancellation token to cancel waiting for a task's completion. Una tarea se inicia, se llama a la CancellationTokenSource.Cancel método para cancelar cualquier del origen de token tokens de cancelación y, a continuación, retrasos durante cinco segundos.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. Tenga en cuenta que la tarea propiamente dicha no se ha pasado el token de cancelación y no se puede cancelar.Note that the task itself has not been passed the cancellation token and is not cancelable. El subproceso de la aplicación llama a la tarea Task.Wait método para esperar la finalización de tarea, pero la espera se cancela una vez que se cancela el token de cancelación y un OperationCanceledException se produce.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. El controlador de excepciones notifica la excepción y, a continuación, se suspende durante seis segundos.The exception handler reports the exception and then sleeps for six seconds. Como se muestra el resultado del ejemplo, dicho retraso permite que la tarea se complete en el RanToCompletion estado.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

Comentarios

El Wait(CancellationToken) método crea una espera se puede cancelar; es decir, hace que el subproceso actual espere hasta que se produzca uno de los siguientes:The Wait(CancellationToken) method creates a cancelable wait; that is, it causes the current thread to wait until one of the following occurs:

Nota

Cancelando la cancellationToken token de cancelación no tiene ningún efecto en la tarea en ejecución a menos que también se ha pasado el token de cancelación y está preparado para controlar la cancelación.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. Pasar el cancellationToken objeto a este método permite simplemente la espera para cancelarse.Passing the cancellationToken object to this method simply allows the wait to be canceled.

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

Espera a que el objeto Task complete la ejecución dentro de un número especificado de milisegundos.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

Parámetros

millisecondsTimeout
Int32 Int32 Int32 Int32

Número de milisegundos de espera o Infinite (-1) para esperar indefinidamente.The number of milliseconds to wait, or Infinite (-1) to wait indefinitely.

Devoluciones

true si Task completó su ejecución en el tiempo asignado; en caso contrario, false.true if the Task completed execution within the allotted time; otherwise, false.

Excepciones

millisecondsTimeout es un número negativo distinto de-1, que representa un tiempo de espera infinito.millisecondsTimeout is a negative number other than -1, which represents an infinite time-out.

Se canceló la tarea.The task was canceled. La colección InnerExceptions contiene un objeto TaskCanceledException.The InnerExceptions collection contains a TaskCanceledException object.

-o bien--or- Se inició una excepción durante la ejecución de la tarea.An exception was thrown during the execution of the task. La colección InnerExceptions contiene información sobre la excepción o excepciones.The InnerExceptions collection contains information about the exception or exceptions.

Ejemplos

El ejemplo siguiente inicia una tarea que genera cinco millones de enteros aleatorios entre 0 y 100 y calcula su Media.The following example starts a task that generates five million random integers between 0 and 100 and computes their mean. El ejemplo se usa el Wait(Int32) método para esperar a la aplicación completa en 150 milisegundos.The example uses the Wait(Int32) method to wait for the application to complete within 150 milliseconds. Si la aplicación se completa con normalidad, la tarea muestra la suma y promedio de los números aleatorios que ha generado.If the application completes normally, the task displays the sum and mean of the random numbers that it has generated. Si ha transcurrido el intervalo de tiempo de espera, en el ejemplo se muestra un mensaje antes de finalizar.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.

Comentarios

Wait(Int32) es un método de sincronización que hace que el subproceso que realiza la llamada debe esperar para que la instancia actual de la tarea en completarse hasta que se produzca uno de los siguientes: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:

  • La tarea se completa correctamente.The task completes successfully.

  • La propia tarea se cancela o produce una excepción.The task itself is canceled or throws an exception. En este caso, controla un AggregateException excepción.In this case, you handle an AggregateException exception. El AggregateException.InnerExceptions propiedad contiene información detallada sobre la excepción o excepciones.The AggregateException.InnerExceptions property contains details about the exception or exceptions.

  • El intervalo definido por millisecondsTimeout transcurre.The interval defined by millisecondsTimeout elapses. En este caso, reanuda la ejecución del subproceso actual y devuelve el método false.In this case, the current thread resumes execution and the method returns false.

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

Espera a que se complete la ejecución del objeto Task.Waits for the Task to complete execution.

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

Excepciones

Se canceló la tarea.The task was canceled. La colección InnerExceptions contiene un objeto TaskCanceledException.The InnerExceptions collection contains a TaskCanceledException object.

-o bien--or- Se inició una excepción durante la ejecución de la tarea.An exception was thrown during the execution of the task. La colección InnerExceptions contiene información sobre la excepción o excepciones.The InnerExceptions collection contains information about the exception or exceptions.

Ejemplos

El ejemplo siguiente inicia una tarea que genera un millón de enteros aleatorios entre 0 y 100 y calcula su Media.The following example starts a task that generates one million random integers between 0 and 100 and computes their mean. El ejemplo se usa el Wait método para asegurarse de que la tarea se complete antes de que termine la aplicación.The example uses the Wait method to ensure that the task completes before the application terminates. En caso contrario, se trata de una aplicación de consola, en el ejemplo finalizaría antes de la tarea puede calcular y mostrar el promedio.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

Comentarios

Wait es un método de sincronización que hace que el subproceso que realiza la llamada espera hasta que se ha completado la tarea actual.Wait is a synchronization method that causes the calling thread to wait until the current task has completed. Si la tarea actual no ha iniciado la ejecución, el método Wait intenta quitar la tarea del programador y lo ejecuta en línea en el subproceso actual.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. Si no puede hacer eso, o si la tarea actual ya ha iniciado la ejecución, se bloquea el subproceso que realiza la llamada hasta que se complete la tarea.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. Para obtener más información, consulte Task.Wait y "la inserción" programación en paralelo con .NET blog.For more information, see Task.Wait and "Inlining" in the Parallel Programming with .NET blog.

Consulte también:

Se aplica a