Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Task.Wait (TimeSpan)

 

Publicado: julio de 2016

Espera a que Task complete la ejecución dentro de un intervalo de tiempo especificado.

Espacio de nombres:   System.Threading.Tasks
Ensamblado:  mscorlib (en mscorlib.dll)

public bool Wait(
	TimeSpan timeout
)

Parámetros

timeout
Type: System.TimeSpan

Estructura TimeSpan que representa el número de milisegundos de espera o estructura TimeSpan que representa -1 milisegundos para esperar indefinidamente.

Valor devuelto

Type: System.Boolean

true si Task completó su ejecución en el tiempo asignado; en caso contrario, false.

Exception Condition
ObjectDisposedException

Se ha eliminado Task.

ArgumentOutOfRangeException

timeout es un número negativo distinto de-1 milisegundos, que representa un tiempo de espera infinito.

-o-

timeout es mayor que MaxValue.

AggregateException

Se canceló la tarea. La colección AggregateException.InnerExceptions contiene un objeto TaskCanceledException.

-o-

Se inició una excepción durante la ejecución de la tarea. La colección AggregateException.InnerExceptions contiene información sobre la excepción o excepciones.

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:

  • The task completes successfully.

  • The task itself is canceled or throws an exception. In this case, you handle an T:System.AggregateException exception. The P:System.AggregateException.InnerExceptions property contains details about the exception or exceptions.

  • The interval defined by timeout elapses. In this case, the current thread resumes execution and the method returns false.

The following example starts a task that generates five million random integers between 0 and 100 and computes their mean. The example uses the M:System.Threading.Tasks.Task.Wait(System.TimeSpan) method to wait for the application to complete within 150 milliseconds. If the application completes normally, the task displays the sum and mean of the random numbers that it has generated. 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.

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 4.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 5.0
Windows Phone Silverlight
Disponible desde 8.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: