我有一个运行的工作流程(由WorkflowApplication托管),发送电子邮件,然后继续使用书签。该电子邮件有一个链接,允许工作流程在该书签中恢复,并正确执行。但是,在工作流程完成后,网页永远不会加载。
就像页面正在等待工作流程完成但它永远不会。我是工作流程的新手,甚至是多线程的新手,所以我的问题是:
我需要做些什么特别的工作才能完全退出工作流程,以便将控制权交还给主线程?像委托方法我错过了?
干杯
答案 0 :(得分:0)
所以我发布后就知道了,所以我很抱歉。不过这是:
因为Workflow是在一个单独的线程上,所以一旦完成它就不会与主线程同步。所以我需要在Completed委托中添加一个方法,以确保它在完成后与主线程同步。我忘记了。希望这有助于某人。
首先,您需要设置并自动重置事件和WorkflowApplication对象
private static AutoResetEvent _syncEvent = new AutoResetEvent(false);
private static WorkflowApplcation _wfApp = new WorkflowApplication(new MyActivity());
然后在wfApp的委托方法中,请务必调用:
_syncEvent.Set();
所以:
wfApp.Completed = (e) =>
{
Debug.WriteLine("Workflow completed: {0}", e.Outputs["Message"]);
_syncEvent.Set();
};
最后一部分是我缺少的