補正可能なアクティビティでのキャンセル ハンドラー

このトピックの内容は、Windows Workflow Foundation 4 に該当します。

このサンプルでは、CompensableActivity でキャンセル ハンドラーを使用する例を示します。

このサンプルには、CompensableActivity キャンセルの使用法を示す 2 つのシナリオが含まれています。最初のシナリオには、3 つの補正可能な子アクティビティを含む補正可能なルート アクティビティが含まれます。2 つの子アクティビティは、アクティビティ本体の実行を正常に終了します。3 つ目の子アクティビティ本体が実行されると、3 つ目のアクティビティ処理をキャンセルすることで処理される例外が発生し、その後ルート アクティビティのキャンセルがトリガーされます。この例のルート アクティビティのロジックでは、先に完了している他の 2 つの子アクティビティが補正されます。

Try
{
    CA 
    {
        CA1 
        {
        }
        CA2
        {
        }
        CA3
        {
            //Exception here
            // Then this will get cancelled
        }

       // Cancellation for the root activity automatically gets called, which, in turn, adds some logic to revert what was done (Or can decide to actually confirm CA1 & CA2 if the user so desires).
    }
}
Catches {
// Can do more stuff...
}

2 つ目のシナリオでは、TryCatch 分岐の前に終了する Delay と平行して、TryCatch を実行する方法を示します。最初の分岐が終了したときに完了条件が true に設定されて、他の分岐がキャンセルされます。

Parallel 
{
    Branch1 
    {
        // Small Delay that times out (timeout1) before branch2.
    }
    Branch2 
    {
        CA 
        {
            CA1 
            {
            }
            CA2 
            {
            }
            CA3 
            {
            }
            If (timeout1)  
            {
                call Cancel CA
            }
        }
    }
}

サンプルを設定、ビルド、および実行するには

  1. Visual Studio 2010 を使用して CompensationCancellation.sln を開きます。

  2. F6 キーを押すか、[ビルド] メニューの [ソリューションのビルド] をクリックして、サンプルをビルドします。

  3. F5 キーを押すか、[デバッグ] メニューの [デバッグ開始] をクリックしてサンプルを実行します。または、Ctrl キーを押しながら F5 キーを押すか、[デバッグ] メニューの [デバッグなしで開始] をクリックすることもできます。

Dd807518.Important(ja-jp,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\Basic\Compensation\CompensationCancellation