0

我在 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 下使用书签,有什么想法吗?

4

1 回答 1

0

当您使用书签保留工作流时,不会调用 Completed 属性,请在设置完 completed 属性后尝试添加此行:

workflowApplication.PersistableIdle = args => {
  syncContext.OperationCompleted();
  return PersistableIdleAction.None;
};

然后应该调用而不是完成,并且 ASP.NET 代码应该重新获得控制权。将 PersistableIdleAction 枚举更改为所需的任何内容,我刚刚选择 None 作为示例代码。

于 2010-05-26T09:30:24.990 回答