如果不保证执行Finally,那么.NET 4.0 TryCatch Activity的意义何在?

Vin*_*nen 4 workflow-activity .net-4.0 workflow-foundation

我今天正在设计一个Activity,我遇到了一个问题,在TryCatch块的Catch中重新抛出异常不会执行与之关联的Finally.经过进一步调查,我发现了以下情况

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

任何人都可以向我解释,如果不保证执行finally块的使用是什么?

我能看到的唯一情况是你是否有嵌套的try块.

µBi*_*Bio 5

如果您按照该连接页面中的某些链接,您将到达此页面,您可以在其中找到答案......要点是:

正常的WF功能就像

try
{
    Environment.FailFast("Game Over.");
}
finally
{
    Console.WriteLine("Not Called");
}
Run Code Online (Sandbox Code Playgroud)

解决方案是(从该页面引用steve danielson): 如果指定取消作为转义工作流根目录的未处理异常的行为,那么它应该给出所需的行为.我已经通过了这些反馈,并将确保更新文档以反映这一点.

Workflowapplication.OnUnhandledException = UnhandledExceptionAction.Cancel

HTH