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

时间:2010-07-14 19:54:11

标签: .net-4.0 workflow-foundation workflow-activity

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

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

如果无法保证执行,有人可以向我解释一下finally块在此活动中的用途吗?

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

1 个答案:

答案 0 :(得分:5)

如果您按照该连接页面中的某些链接进行操作,则会显示this page,您可以在那里找到答案......要点是:

正常的WF功能如

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

解决方案是(从该页面引用steve danielson): 如果指定“取消”作为转义工作流根目录的未处理异常的行为,则应该提供所需的行为。我已经传递了这些反馈,并将确保更新文档以反映这一点。

Workflowapplication.OnUnhandledException = UnhandledExceptionAction.Cancel

HTH