我在asp.net下运行工作流程并使用SynchronizationContext使页面“等待”工作流程。以下是我在asp.net下运行工作流实例的方法:
var workflowApplication = new WorkflowApplication(activity);
SynchronizationContext syncContext = SynchronizationContext.Current;
workflowApplication.Completed = delegate { syncContext.OperationCompleted(); };
workflowApplication.SynchronizationContext = syncContext;
syncContext.OperationStarted();
workflowApplication.Run();
在其中一项活动中,我使用书签。现在,每当我调用CreateBookmark时,我都希望页面处理继续。我尝试在设置书签之前调用SynchronizationContext.Current.OperationCompleted(),但是当工作流程恢复并完成时,它会破坏asp.net站点(我认为工作流实例在完成时再次调用OperationCompleted并且错误提升)
如何使用Asp.Net下的书签,任何想法?
答案 0 :(得分:0)
当您使用书签持久保存工作流程时,未调用已完成的属性,请在设置完成的属性后尝试添加此行:
workflowApplication.PersistableIdle = args => {
syncContext.OperationCompleted();
return PersistableIdleAction.None;
};
然后应该调用它而不是完成,ASP.NET代码应该重新获得控制权。将PersistableIdleAction枚举更改为所需的任何内容,我刚刚选择了None作为示例代码。