Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Task.Wait (TimeSpan)

 

Data di pubblicazione: luglio 2016

Attende il completamento dell'esecuzione di Task entro un intervallo di tempo specificato.

Spazio dei nomi:   System.Threading.Tasks
Assembly:  mscorlib (in mscorlib.dll)

public bool Wait(
	TimeSpan timeout
)

Parametri

timeout
Type: System.TimeSpan

Oggetto TimeSpan che rappresenta il numero di millisecondi di attesa oppure TimeSpan che rappresenta -1 millisecondi per un'attesa indefinita.

Valore restituito

Type: System.Boolean

true se Task ha completato l'esecuzione nel tempo consentito; in caso contrario, false.

Exception Condition
ObjectDisposedException

L'interfaccia Task è stata eliminata.

ArgumentOutOfRangeException

timeout è un numero negativo diverso da -1 millisecondi, che rappresenta un timeout infinito.

-oppure-

timeout è maggiore di MaxValue.

AggregateException

L'attività è stata annullata. La raccolta AggregateException.InnerExceptions contiene un oggetto TaskCanceledException.

-oppure-

È stata generata un'eccezione durante l'esecuzione dell'attività. La raccolta AggregateException.InnerExceptions contiene informazioni su una o più eccezioni.

Wait(TimeSpan)è un metodo di sincronizzazione che provoca il thread chiamante di attesa per l'istanza corrente di attività completare fino a quando non si verifica una delle operazioni seguenti:

  • L'attività viene completata correttamente.

  • L'attività stessa viene annullata o genera un'eccezione. In questo caso, si gestisce un AggregateException eccezione. La AggregateException.InnerExceptions proprietà contiene i dettagli sull'eccezione o le eccezioni.

  • L'intervallo definito da timeout scade. In questo caso, il thread corrente viene ripresa l'esecuzione e il metodo restituisce false.

Nell'esempio seguente avvia un'attività che genera valori integer casuali 5 milioni compreso tra 0 e 100 e calcola la Media. Nell'esempio viene utilizzato il Wait(TimeSpan) metodo per attendere che l'applicazione è completata entro 150 millisecondi. Se l'applicazione viene completata, l'attività consente di visualizzare la somma e Media dei numeri casuali che è generato. Se è trascorso l'intervallo di timeout, verrà visualizzato un messaggio prima che venga terminato.

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.

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 4.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 5.0
Windows Phone Silverlight
Disponibile da 8.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: