Task.Start Метод

Определение

TaskЗапускается .

Перегрузки

Имя Описание
Start()

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

Start(TaskScheduler)

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

Start()

Исходный код:
Task.cs
Исходный код:
Task.cs
Исходный код:
Task.cs
Исходный код:
Task.cs
Исходный код:
Task.cs

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
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

Комментарии

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

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

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

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

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

Start(TaskScheduler)

Исходный код:
Task.cs
Исходный код:
Task.cs
Исходный код:
Task.cs
Исходный код:
Task.cs
Исходный код:
Task.cs

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 был удален.

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

Комментарии

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

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

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

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