繁体   English   中英

在WF 4和MVC3中正确完成工作流程的执行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM