Task.Start Metoda

Definice

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.

Viz také

Platí pro