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 (Int32)

 

Publicado: julio de 2016

Espera a que el objeto Task complete la ejecución dentro de un número especificado de milisegundos.

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

public bool Wait(
	int millisecondsTimeout
)

Parámetros

millisecondsTimeout
Type: System.Int32

Número de milisegundos de espera o Infinite (-1) 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

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

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(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 completar hasta que se produzca uno de los siguientes:

  • La tarea se completa correctamente.

  • La tarea propiamente dicha se cancela o inicia una excepción. En este caso, controlar un AggregateException excepción. El AggregateException.InnerExceptions propiedad contiene información detallada sobre la excepción o excepciones.

  • El intervalo que define millisecondsTimeout transcurre. En este caso, el subproceso actual reanuda la ejecución y el método devuelve false.

En el ejemplo siguiente se inicia una tarea que genera números enteros aleatorios de cinco millones entre 0 y 100 y calcula su Media. El ejemplo se utiliza la Wait(Int32) método para esperar la aplicación pueda completar dentro de 150 milisegundos. Si la aplicación se completa con normalidad, la tarea muestra la suma y promedio de los números aleatorios que ha generado. Si ha transcurrido el intervalo de tiempo de espera, en el ejemplo se muestra un mensaje antes de finalizar.

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.

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: