Task.Start 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
開始 Task。
多載
| 名稱 | Description |
|---|---|
| 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 物件,該物件顯示其任務 ID 與管理執行緒 ID,並執行迴圈。 接著它呼叫該 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 建構子建立的任務。 通常,當你需要將任務的建立與執行分開時,例如你有條件地執行已建立的任務時,你會這麼做。 對於較常見的情況,不需要將任務實例化與執行分開,我們建議你呼叫 or 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該實例已被處理。
排程器無法排隊此任務。
備註
一個任務只能啟動並執行一次。 任何第二次排程任務的嘗試都會導致例外。
關於任務操作拋出的異常處理資訊,請參見 異常處理。