0

我对 Windows Workflow 基础有点陌生,所以它可能非常简单,但我坚持下去。我有一个非常简单的顺序工作流,并且事务范围活动中有几个代码活动。

我正在从具有以下代码的控制台应用程序运行我的工作流程:

        Activity workflow = new Process();
        var inputArgument = new Dictionary<string, object>();
        inputArgument["Argument 1"] = 1234567;
        inputArgument["Argument 2"] = 1234567;
        inputArgument["Argument 3"] = "GUID";
        inputArgument["Aggument 4"] = @"\\filepath\";

        var syncEvent = new AutoResetEvent(false);

        var workflowApp = new WorkflowApplication(workflow, inputArgument);

        workflowApp.OnUnhandledException =
            delegate (WorkflowApplicationUnhandledExceptionEventArgs e)
            {
                return UnhandledExceptionAction.Terminate;
            };

        workflowApp.Completed +=
            delegate (WorkflowApplicationCompletedEventArgs e)
            {
                syncEvent.Set();
            };

        workflowApp.Run();

        syncEvent.WaitOne();

如果我不添加 Transaction Scope 活动,我的工作流运行良好,并且在异常情况下工作流实例终止并且我的控制台应用程序也关闭。

但是,当我添加事务范围活动时,如果事务范围内的任何活动失败,那么我的工作流实例和我的控制台一样继续运行。谁能指导我如何终止实例?

我没有在我的工作流程中处理任何异常,并希望它是这样的,以便我可以记录异常详细信息。

4

1 回答 1

2

如果您转到TransactionScope工作流中的属性,则true默认情况下会设置一个名为的属性AbortInstanceOnTransactionFailure。将其设置为false。然后它应该按照您的预期运行。

启用此选项后,它将导致工作流实例中止但不会终止。

于 2016-02-17T21:52:10.113 回答