主要參考 runtime 專案中的 System/Threading/Tasks/Task.cs 檔案。
執行流程:
初始狀態:已建立/等待啟動
 → 呼叫 Start() 或進行排程 → 進入「等待執行」狀態
  → 由執行緒池執行 ExecuteEntry → 進入「執行中」狀態(委派方法已呼叫)
   → 執行使用者委派:可能成功、發生例外或拋出取消例外
    → 標記為「使用者委派已執行完成」
     → 若包含子任務:進入「等待子任務完成」狀態 → 直到最後一個子任務完成
     → 進入第二階段完成程序:設定最終狀態為「執行完成」、「發生錯誤」或「已取消」
     → 進入第三階段完成程序:清理資源、通知父任務、執行接續動作
      → 觸發 Await、ContinueWith、WhenAll 等後續操作
重要欄位說明:
m_stateFlags:以位元標記記錄多種狀態(如是否完成、發生錯誤、已取消、等待計數等)m_action / m_stateObject:儲存要執行的委派方法及其參數狀態m_continuationObject:可能是單一委派、委派清單或特殊標記物件m_taskScheduler:任務排程器參考(通常預設為執行緒池排程器)m_parent / m_contingentProperties:記錄父子任務關係、取消信號、例外集合等擴充屬性m_result:儲存執行結果典型生命週期: 已建立 → (排程) → 執行中 → (設定結果/例外/取消) → 完成狀態。
完成階段會依序呼叫 FinishStageTwo() → FinishContinuations(),遍歷並執行所有接續任務。
TaskCompletionSource:提供外部控制任務狀態的封裝機制(透過 TrySetResult/Exception/Canceled 方法)。內部包含一個 Task 執行個體,並公開對應的 Task 屬性供外部存取。