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.Start ()

 

Data di pubblicazione: ottobre 2016

Avvia Task, pianificandone l'esecuzione nell'oggetto TaskScheduler corrente.

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

public void Start()

Exception Condition
ObjectDisposedException

L’istanza di Task è stata eliminata.

InvalidOperationException

Task non è in uno stato valido per essere avviato. Potrebbe essere già stato avviato, eseguito o annullato oppure potrebbe essere stato creato in un modo che non supporta la pianificazione diretta.

Un'attività può essere avviata ed eseguita una sola volta. Qualsiasi tentativo di pianificare un'attività una seconda volta comporterà un'eccezione.

Il Start viene utilizzata per eseguire un'attività che è stata creata chiamando uno del Task costruttori. In genere, questo caso quando è necessario separare la creazione dell'attività dalla sua esecuzione, ad esempio quando si esegue in modo condizionale le attività che è stata creata. Per il caso più comune in cui non è necessario separare la creazione di istanze di attività dall'esecuzione, è consigliabile chiamare un overload di Task.Run o TaskFactory.StartNew (metodo).

Per informazioni sulla gestione delle eccezioni generate da operazioni di attività, vedere Gestione delle eccezioni (Task Parallel Library).

Nell'esempio seguente viene chiamato il Task(Action) costruttore per creare un'istanza di un nuovo Task oggetto che consente di visualizzare l'attività ID e l'ID thread gestito e quindi esegue un ciclo. Chiama quindi il Start metodo per eseguire l'attività. Poiché si tratta di un'applicazione console, la chiamata al Wait metodo è fondamentale per impedire l'applicazione termini prima che l'attività termina l'esecuzione.

using System;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      var t = new Task( () => { Console.WriteLine("Task {0} running on thread {1}",
                                                  Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
                                for (int ctr = 1; ctr <= 10; ctr++)
                                   Console.WriteLine("   Iteration {0}", ctr); } 
                        );
      t.Start();
      t.Wait();   
   }
}
// The example displays output like the following:
//     Task 1 running on thread 3
//        Iteration 1
//        Iteration 2
//        Iteration 3
//        Iteration 4
//        Iteration 5
//        Iteration 6
//        Iteration 7
//        Iteration 8
//        Iteration 9
//        Iteration 10

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: