gpt4 book ai didi

c# - WorkFlow Foundation 4 WorkflowApplication Completed 未触发

转载 作者:行者123 更新时间:2023-12-04 04:37:40 24 4
gpt4 key购买 nike

我有以下代码

AutoResetEvent instanceUnloaded = new AutoResetEvent(false);

WFStepsActivity workflow = WorkflowFactory.Current.BuildWorkflow(workflowinstance, requestinstance.RequestInstanceID);
WorkflowApplication wf = new WorkflowApplication(workflow);

wf.InstanceStore = WFInstanceStore.GetInstanceStore();

WFStepsPersistenceParticipant persist = new WFStepsPersistenceParticipant();
wf.Extensions.Add(persist);
wf.PersistableIdle = (arg) =>
{
return PersistableIdleAction.Unload;
};

wf.Unloaded = (arg) =>
{
log.Info("WFName_" + wfsetting.Name + "_Unloaded and return.");
instanceUnloaded.Set();
};
wf.OnUnhandledException = (arg) =>
{
return UnhandledExceptionAction.Abort;
};

wf.Completed = (arg) =>
{
if (arg.CompletionState == ActivityInstanceState.Closed)
{
persist.WorklflowCompleted = true;
}
};

wf.Run();
instanceUnloaded.WaitOne();
return persist.WorklflowCompleted;
其中 WFStepsActivity 只是我们从设置构建的 Acitivity 结构。
当前工作流在创建书签时结束。
context.CreateBookmark(context.WorkflowInstanceId.ToString(), new System.Activities.BookmarkCallback(OnResumeBookmark));
问题是在创建书签后 wf.Completed永远不会被触发。
想检查是否在创建书签时触发 Complete。
据我所知,如果您取消,终止,将触发 Complete 事件
不是说一旦书签的工作流停止,就会触发这个事件吗?

最佳答案

书签会导致工作流变为空闲,这意味着您必须有目的地在书签处恢复以继续并完成工作流。第一件事:Grok bookmarks .
我不确定您是否提供了足够的代码来允许任何人正确诊断确切的问题(我看不到您的书签创建,也看不到您的支持类等)。
您的工作流程也可能抛出异常,其细节正在被吞噬。如果您想捕获并记录任何未处理的异常,我会这样修改您的代码:

Exception error = null;
wf.OnUnhandledException = (arg) =>
{
error = arg.UnhandledException;
return UnhandledExceptionAction.Abort;
};

// and then after you've waited for completion...
if (error != null) {
throw error; // or handle it another way
}
同样有用: Configuring Tracking for a Workflow

关于c# - WorkFlow Foundation 4 WorkflowApplication Completed 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19447014/

24 4 0