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) 构造函数来实例化显示其任务 ID 和托管线程 ID 的新 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 构造函数创建的任务。 通常,当需要将任务的创建与其执行分开时(例如,有条件地执行已创建的任务时),执行此操作。 对于不需要将任务实例化与执行分开的更常见情况,我们建议调用该或TaskFactory.StartNew方法的Task.Run重载。

有关处理任务操作引发的异常的信息,请参阅 异常处理

另请参阅

适用于

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 实例。

计划程序无法将此任务排入队列。

注解

任务只能启动并仅运行一次。 第二次计划任务的任何尝试都会导致异常。

有关处理任务操作引发的异常的信息,请参阅 异常处理

另请参阅

适用于