4

今日、Activity を設計していましたが、TryCatch ブロックの Catch 内で例外を再スローしても、それに関連付けられている Final が実行されないという問題に遭遇しました。さらに調査したところ、次のことがわかりました

http://connect.microsoft.com/wf/feedback/details/557601/try-catch-activity-never-executes-finally-if-exception-propagates

実行が保証されていない場合、このアクティビティでの finally ブロックの使用について誰か説明できますか?

私が確認できる唯一のケースは、try ブロックがネストされている場合です。

4

1 に答える 1

5

その接続ページからいくつかのリンクをたどると、答えを見つけることができるこのページに到達します...要点は次のとおりです。

通常のWFは次のように機能します

try
{
    Environment.FailFast("Game Over.");
}
finally
{
    Console.WriteLine("Not Called");
}

解決策は次のとおりです(そのページからsteve danielsonを引用): ワークフローのルートをエスケープする未処理の例外の動作として[キャンセル]を指定すると、目的の動作が得られるはずです。私はこのフィードバックを伝えました。これを反映するようにドキュメントが更新されていることを確認します。

すなわちWorkflowapplication.OnUnhandledException = UnhandledExceptionAction.Cancel

HTH

于 2010-07-14T20:13:33.047 に答える