Task.Start Метод

Определение

Запускает Task.

Перегрузки

Start()

Запускает задачу Task, планируя ее выполнение в текущем планировщике TaskScheduler.

Start(TaskScheduler)

Запускает задачу Task, планируя ее выполнение в заданном планировщике TaskScheduler.

Start()

Запускает задачу Task, планируя ее выполнение в текущем планировщике TaskScheduler.

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

Исключения

Экземпляр Task удален.

Задача Task не находится в допустимом состоянии для запуска. Возможно, она уже запущена, выполнена или отменена, или она была создана способом, не поддерживающим прямое планирование.

Примеры

В следующем примере вызывается Task(Action) конструктор для создания экземпляра нового Task объекта, отображающего его идентификатор задачи и идентификатор управляемого потока, а затем выполняет цикл. Затем он вызывает Start метод для выполнения задачи. Так как это консольное приложение, вызов Wait метода необходим, чтобы предотвратить завершение работы приложения до завершения выполнения задачи.

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

Комментарии

Задача может быть запущена и запущена только один раз. Любые попытки запланировать задачу во второй раз приведут к исключению.

Используется Start для выполнения задачи, созданной путем вызова одного из Task конструкторов. Как правило, это необходимо сделать, если необходимо отделить создание задачи от его выполнения, например при условном выполнении созданных задач. Для более распространенного случая, в котором не требуется отделять экземпляр задачи от выполнения, рекомендуется вызвать перегрузку Task.Run метода или TaskFactory.StartNew метода.

Сведения об обработке исключений, создаваемых операциями задач, см. в разделе "Обработка исключений".

См. также раздел

Применяется к

Start(TaskScheduler)

Запускает задачу Task, планируя ее выполнение в заданном планировщике 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)

Параметры

scheduler
TaskScheduler

Планировщик TaskScheduler, с которым нужно связать и в котором нужно выполнить данную задачу.

Исключения

Аргумент scheduler имеет значение null.

Задача Task не находится в допустимом состоянии для запуска. Возможно, она уже запущена, выполнена или отменена, или она была создана способом, не поддерживающим прямое планирование.

Экземпляр Task удален.

Планировщику не удалось поставить эту задачу в очередь.

Комментарии

Задача может запускаться только один раз. Любые попытки запланировать задачу во второй раз приведут к исключению.

Сведения об обработке исключений, создаваемых операциями задач, см. в разделе "Обработка исключений".

См. также раздел

Применяется к