Task.Start Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Avvia l'oggetto Task.
Overload
| Nome | Descrizione |
|---|---|
| Start() |
Avvia , Taskpianificandolo per l'esecuzione nell'oggetto corrente TaskScheduler. |
| Start(TaskScheduler) |
Avvia , Taskpianificandolo per l'esecuzione nell'oggetto specificato TaskScheduler. |
Start()
Avvia , Taskpianificandolo per l'esecuzione nell'oggetto corrente TaskScheduler.
public:
void Start();
public void Start();
member this.Start : unit -> unit
Public Sub Start ()
Eccezioni
L'istanza Task è stata eliminata.
L'oggetto Task non è in uno stato valido da avviare. Potrebbe essere già stato avviato, eseguito o annullato oppure potrebbe essere stato creato in modo che non supporti la pianificazione diretta.
Esempio
Nell'esempio seguente viene chiamato il Task(Action) costruttore per creare un'istanza di un nuovo Task oggetto che visualizza l'ID attività e l'ID del 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 che l'app venga interrotta 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
open System.Threading
open System.Threading.Tasks
let t =
new Task(fun () ->
printfn $"Task {Task.CurrentId} running on thread {Thread.CurrentThread.ManagedThreadId}"
for i = 1 to 10 do
printfn $" Iteration {i}")
t.Start()
t.Wait() |> ignore
// 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. Qualsiasi tentativo di pianificare un'attività una seconda volta genererà un'eccezione.
Viene Start utilizzato 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 , Taskpianificandolo per l'esecuzione nell'oggetto specificato TaskScheduler.
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 con cui associare ed eseguire questa attività.
Eccezioni
L'argomento scheduler è null.
L'oggetto Task non è in uno stato valido da avviare. Potrebbe essere già stato avviato, eseguito o annullato oppure potrebbe essere stato creato in modo che non supporti la pianificazione diretta.
L'istanza Task è stata eliminata.
L'utilità di pianificazione non è riuscita a accodare questa attività.
Commenti
Un'attività può essere avviata ed eseguita una sola volta. Qualsiasi tentativo di pianificare un'attività una seconda volta genererà un'eccezione.
Per informazioni sulla gestione delle eccezioni generate dalle operazioni delle attività, vedere Gestione delle eccezioni.