Task.Start Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
TaskSpustí .
Přetížení
Start() |
TaskSpustí , plánování spuštění na aktuální TaskScheduler. |
Start(TaskScheduler) |
TaskSpustí , plánování spuštění na zadané TaskScheduler. |
Start()
TaskSpustí , plánování spuštění na aktuální TaskScheduler.
public:
void Start();
public void Start ();
member this.Start : unit -> unit
Public Sub Start ()
Výjimky
Instance Task byla odstraněna.
Není Task v platném stavu, který se má spustit. Možná už byl spuštěný, spuštěný nebo zrušený nebo byl vytvořen způsobem, který nepodporuje přímé plánování.
Příklady
Následující příklad volá konstruktor k vytvoření instance nového Task objektuTask(Action), který zobrazí ID úlohy a spravované ID vlákna a pak spustí smyčku. Pak zavolá metodu Start , která provede úlohu. Vzhledem k tomu, že se jedná o konzolovou aplikaci, je volání Wait metody nezbytné, aby se zabránilo ukončení aplikace před dokončením provádění úlohy.
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
Poznámky
Úkol může být spuštěn a spuštěn pouze jednou. Jakékoli pokusy o naplánování úkolu na druhý čas budou mít za následek výjimku.
Slouží Start ke spuštění úlohy, která byla vytvořena voláním jednoho z Task konstruktorů. Obvykle to uděláte, když potřebujete oddělit vytvoření úkolu od jeho spuštění, například při podmíněném spouštění úloh, které jste vytvořili. Pro častější případ, kdy nepotřebujete oddělit instanci úlohy od spuštění, doporučujeme volat přetížení Task.Run nebo TaskFactory.StartNew metody.
Informace o zpracování výjimek vyvolaných operacemi úloh naleznete v tématu Zpracování výjimek.
Viz také
Platí pro
Start(TaskScheduler)
TaskSpustí , plánování spuštění na zadané 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)
Parametry
- scheduler
- TaskScheduler
K TaskScheduler němuž chcete přidružit a spustit tuto úlohu.
Výjimky
Argument scheduler
je null
.
Není Task v platném stavu, který se má spustit. Možná už byl spuštěný, spuštěný nebo zrušený nebo byl vytvořen způsobem, který nepodporuje přímé plánování.
Instance Task byla odstraněna.
Plánovač nemohl tuto úlohu zařadit do fronty.
Poznámky
Úkol lze spustit pouze jednou a spustit pouze jednou. Jakékoli pokusy o naplánování úkolu na druhý čas budou mít za následek výjimku.
Informace o zpracování výjimek vyvolaných operacemi úloh naleznete v tématu Zpracování výjimek.