本文揭示 WF4.0 核心執行模型:**工作流實例單執行緒執行**,Delay 非 Thread.Sleep,Parallel 非多執行緒並行,WorkflowInvoker 與 WorkflowApplication 執行緒模式迥異,InvokeMethod 可跨執行緒呼叫非同步方法。
WF3.x 與 WF4.0 皆採單執行緒模型。Parallel 並非多執行緒,而是**單執行緒輪詢各分支任務佇列**,依序執行可執行節點,遇阻塞 (Delay 未到期、書籤等待) 則跳過下一分支。

實驗 1:Thread.Sleep 在 Parallel 中 - 兩分支各 Sleep 10秒,總耗時 20 秒 (串行累加)。

實驗 2:Delay 在 Parallel 中 - 兩分支各 Delay 10秒,總耗時 **10 秒** (並行等待)。

結論:Delay 釋放執行緒並註冊計時器回呼,Parallel 輪詢時發現分支閒置即跳過,實現真正並行等待效果。


設定 RunAsynchronously=True,需提供 Begin方法名/End方法名 配對。關鍵在 IAsyncResult.CompletedSynchronously 回傳值:
InvokeMethod 等待非同步操作完成才繼續 (真正非同步) 
InvokeMethod 同步調用 Begin/End,**不等待** 背景執行緒完成即繼續 
RunAsynchronously=False:直接同步呼叫原方法。