Task.Start 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
啟動 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 物件,以顯示其工作識別碼和 Managed 執行緒識別碼,然後執行迴圈。 然後它會 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 執行個體已經過處置。
排程器無法將這項工作排入佇列。
備註
工作只能啟動並執行一次。 第二次排程工作的任何嘗試都會導致例外狀況。
如需處理工作作業擲回之例外狀況的資訊,請參閱 例外狀況處理。