Windows 事务失败后工作流未终止
Windows Workflow not terminating after Transaction Failure
我对 Windows 工作流基础有点陌生,所以它可能非常简单,但我坚持使用它。我有一个非常简单的顺序工作流,事务范围内有几个代码活动 Activity。
我 运行 我的工作流程来自具有以下代码的控制台应用程序:
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();
如果我不添加事务范围activity,我的工作流程运行良好,如果出现异常,工作流程实例将终止,我的控制台应用程序也会关闭。
但是,当我添加事务范围 activity 时,如果任何 activity 在事务范围内失败,那么我的工作流实例将保留 运行 以及我的控制台。谁能指导我如何终止实例?
我没有在我的工作流程中处理任何异常,我希望它像这样,以便我可以记录异常详细信息。
如果您转到工作流中 TransactionScope
的属性,有一个 属性 默认设置为 true
,名为 AbortInstanceOnTransactionFailure
。将其设置为 false
。它应该会像您期望的那样运行。
启用后,它将导致工作流实例中止但不会终止。
我对 Windows 工作流基础有点陌生,所以它可能非常简单,但我坚持使用它。我有一个非常简单的顺序工作流,事务范围内有几个代码活动 Activity。
我 运行 我的工作流程来自具有以下代码的控制台应用程序:
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();
如果我不添加事务范围activity,我的工作流程运行良好,如果出现异常,工作流程实例将终止,我的控制台应用程序也会关闭。
但是,当我添加事务范围 activity 时,如果任何 activity 在事务范围内失败,那么我的工作流实例将保留 运行 以及我的控制台。谁能指导我如何终止实例?
我没有在我的工作流程中处理任何异常,我希望它像这样,以便我可以记录异常详细信息。
如果您转到工作流中 TransactionScope
的属性,有一个 属性 默认设置为 true
,名为 AbortInstanceOnTransactionFailure
。将其设置为 false
。它应该会像您期望的那样运行。
启用后,它将导致工作流实例中止但不会终止。