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