このトピックの内容は、Windows Workflow Foundation 4 に該当します。
このサンプルでは、ワークフローでシリアル化不可能で破棄可能な状態を処理する方法を示します。ワークフローでシリアル化不可能な状態を永続化しないようにし、破棄可能なオブジェクトをワークフローで使用した後にクリーンアップすることが重要です。
使用例
NoPersistScope
カスタム アクティビティおよびデザイナー。
NoPersistZone アクティビティの使用
サンプル ワークフローの実行時に、CreateTextWriter
というカスタム アクティビティによって、TextWriter 型のオブジェクトが作成されてワークフロー変数に保存されます。TextWriter は IDisposable オブジェクトです。この TextWriter は、サンプルが実行されるディレクトリにある out.txt という名前のファイルに書き込むように構成されており、コンソールで入力するテキストをエコーするときに WriteLine アクティビティによって使用されます。
エコー ロジックは、ワークフローが永続化されないようにする NoPersistScope
アクティビティ (このサンプルの一部でもあるコード) 内で実行されます。コンソールで「unload」と入力すると、ホストはワークフロー インスタンスを永続化しようとしますが、ワークフローは NoPersistScope
内に留まるので、この操作はタイムアウトします。また、ワークフローは Dispose
というカスタム アクティビティを使用して、TextWriter オブジェクトを使い終わったら破棄します。Dispose
アクティビティは、Try ブロックの実行中に例外が発生した場合でも実行されるように、TextWriter 変数が宣言される TryCatch アクティビティの Finally ブロック内に配置されます。
「exit」と入力すると、ワークフロー インスタンスを完了してプログラムを終了することができます。
サンプルを実行するには
Visual Studio 2010 で NoPersistZone.sln ソリューションを開きます。
ソリューションをビルドするには、F6 キーを押すか、[ビルド] メニューの [ソリューションのビルド] をクリックします。
ビルドが完了したら、F5 キーを押すか、[デバッグ] メニューの [デバッグ開始] をクリックします。または、Ctrl キーを押しながら F5 キーを押すか、[デバッグ] メニューの [デバッグなしで開始] をクリックして、デバッグ機能なしで実行します。
クリーンアップするには (省略可能)
- SQL インスタンス ストアを削除するには、Cleanup.cmd を実行します。
![]() |
---|
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。
<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\ActivityLibrary\NoPersistScope
|