Task.Start Metodo

Definizione

Avvia Task.

Overload

Start()

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

Start(TaskScheduler)

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

Start()

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

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

Eccezioni

L’istanza di Task è stata eliminata.

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.

Esempio

Nell'esempio seguente viene chiamato il costruttore per creare un'istanza di un nuovo Task oggetto che visualizza l'ID attività e l'ID Task(Action) thread gestito e quindi esegue un ciclo. Chiama quindi il Start metodo per eseguire l'attività. Poiché si tratta di un'app console, la chiamata al Wait metodo è necessaria per impedire all'app di terminare prima che l'attività finisca 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
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t As New Task(Sub()
                           Console.WriteLine("Task {0} running on thread {1}",
                                             Task.CurrentId, Thread.CurrentThread.ManagedThreadId )
                           For ctr As Integer = 1 To 10
                              Console.WriteLine("   Iteration {0}", ctr)
                           Next   
                        End Sub)
      t.Start
      t.Wait()   
   End Sub
End Module
' 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

Commenti

Un'attività può essere avviata ed eseguita una sola volta. Eventuali tentativi di pianificare un'attività una seconda volta generano un'eccezione.

Viene Start usato per eseguire un'attività creata chiamando uno dei Task costruttori. In genere, questa operazione viene eseguita quando è necessario separare la creazione dell'attività dalla relativa esecuzione, ad esempio quando si eseguono in modo condizionale le attività create. Per il caso più comune in cui non è necessario separare l'istanza dell'attività dall'esecuzione, è consigliabile chiamare un overload del Task.Run metodo o TaskFactory.StartNew .

Per informazioni sulla gestione delle eccezioni generate dalle operazioni delle attività, vedere Gestione delle eccezioni.

Vedi anche

Si applica a

Start(TaskScheduler)

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

public:
 void Start(System::Threading::Tasks::TaskScheduler ^ scheduler);
public void Start (System.Threading.Tasks.TaskScheduler scheduler);
member this.Start : System.Threading.Tasks.TaskScheduler -> unit
Public Sub Start (scheduler As TaskScheduler)

Parametri

scheduler
TaskScheduler

Oggetto TaskScheduler a cui associare e con cui eseguire questa attività.

Eccezioni

Il valore dell'argomento scheduler è null.

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.

L’istanza di Task è stata eliminata.

L'utilità di pianificazione non è riuscita a inserire in coda questa attività.

Commenti

Un'attività può essere avviata ed eseguita una sola volta. Eventuali tentativi di pianificare un'attività una seconda volta generano un'eccezione.

Per informazioni sulla gestione delle eccezioni generate dalle operazioni delle attività, vedere Gestione delle eccezioni.

Vedi anche

Si applica a