[英]Properly completing execution of a Workflow in WF 4 and MVC3
我有一个运行的工作流程(由WorkflowApplication托管),发送电子邮件,然后使用书签进行保存。 电子邮件具有一个链接,该链接使工作流程可以在该书签处恢复,这可以正常进行。 但是,工作流完成后,该网页将永远不会加载。
就像页面正在等待工作流完成一样,但是从来没有完成。 我对工作流非常陌生,对多线程甚至还比较新,所以我的问题是:
我需要做些什么特别的事情才能完全退出工作流,以便将控制权交还给主线程吗? 像委托方法,我想念吗?
干杯
所以我在发帖后马上就知道了,很抱歉。 虽然是这样:
因为工作流在单独的线程上,所以一旦完成,它就不会与主线程同步。 因此,我需要在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();
};
这最后一部分是我所缺少的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.