第三個C#工作流實例--使用WorkflowAppliction承載工作流


除了Invoke方法,WorkflowInvoker中其他有趣的成員是BeginInvoke()和EndInvoke(),他們使用.net異步委托模式,在另一個線程中啟動工作流。如果希望對WF運行時操作工作流有更多的控制,可以使用WorkflowApplication

        要保存和加載一個使用WF持久化服務長期運行的工作流,可以使用WorkflowApplication。它具有接收工作流實例生命周期中觸發的各種事件的通知、WF“書簽”等其他高級特性。
下面修改第二個實例的Main方法,使用WorkflowApplication替代WorkflowInvoker
static void Main(string[] args)
        {
            string wfData = Console.ReadLine();
 
            //這里用Dictionary類型,因為Invoke重載接受這種鍵值對的類型
            Dictionary wfArgs = new Dictionary();
 
            //使用鍵值對,鍵為我們剛才加的參數名稱,將數據存入到字典中
            wfArgs.Add("Message", wfData);
 
            AutoResetEvent waitHandler = new AutoResetEvent(false);
            //傳遞給工作流
            WorkflowApplication app = new WorkflowApplication(new Activity1(), wfArgs);
            //將事件與app掛鈎,當工作流結束前,通知其他線程,並打印一條信息
            app.Completed = (completedArgs) =>
            {
                waitHandler.Set();
                Console.WriteLine("the workflow is done");
            };
            //開啟工作流
            app.Run();
            //在工作流程結束之前一直等待
            waitHandler.WaitOne();
            Console.WriteLine("結束了");
        }
輸出結果:
第三個C#工作流實例--使用WorkflowAppliction承載工作流

使用WorkflowApplication的好處是,可以將工作流與事件掛鈎,並且可以使用更復雜的服務(如持久化,書簽等)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM