共用方式為


交易回復

本主題僅適用於 Windows Workflow Foundation 4。

這個範例示範如何建立自訂 NativeActivity,用來存取環境 RuntimeTransactionHandle 以取得環境交易並明確回復此交易。

範例詳細資料

在工作流程中,當最外層的 TransactionScopeTransactedReceiveScope 完成時,交易就自動完成。 當未處理的例外狀況跨範圍界限傳播時,交易會隱含回復。 不過,有時候,明確回復交易而不需擲回例外狀況是合理的。 在此情況下,您可以使用自訂回復活動 (如本範例所述),明確中止環境交易並提供選擇性的例外狀況原因。

RollbackActivityNativeActivity,因為它需要存取執行屬性以取得環境 RuntimeTransactionHandle。 在 Execute 方法中,它會取得 RuntimeTransactionHandle 並檢查是否為 null,表示使用活動時未搭配環境執行階段交易。 接著取得交易,再次檢查 null 是否存在。 可能有環境 RuntimeTransactionHandle,但從未初始化執行階段交易。 最後,它會呼叫 Rollback 並指定使用者提供的例外狀況或泛型例外狀況,表示活動回復交易,藉以中止交易。

示範工作流程是由 TransactionScope 所組成,其主體會在 RollbackActivity 執行前後列印交易狀態。 請注意,即使交易已經回復,TransactionScope 也會執行完成,在主體完成之前不會中止工作流程。 工作流程之所以中止,是因為 AbortInstanceOnTransactionFailure 屬性預設為 true

若要使用這個範例

  1. 在 Visual Studio 2010 中載入 TransactionRollback.sln 方案。

  2. 按 F6 以建立方案。

  3. 按 CTRL+F5 執行應用程式。

Ee656553.Important(zh-tw,VS.100).gif 注意:
這些範例可能已安裝在您的電腦上。 請先檢查下列 (預設) 目錄,然後再繼續。

<InstallDrive>:\WF_WCF_Samples

如果此目錄不存在,請移至用於 .NET Framework 4 的 Windows Communication Foundation (WCF) 與 Windows Workflow Foundation (WF) 範例 (英文),以下載所有 Windows Communication Foundation (WCF) 和 WF 範例。 此範例位於下列目錄。

<InstallDrive>:\WF_WCF_Samples\WF\Scenario\Transactions\TransactionRollback

另請參閱

概念

工作流程交易