zoukankan      html  css  js  c++  java
  • 【代码保留】WorkflowRuntimeFactory

    由于工作流运行时WorkflowRuntime在一个应用程序域中只允许存在一个实例,因此可以用单件Singleton模式来限制,并可以用工厂模式来调用,另者由于运行时需要有Start和Stop,因此也可以在工厂内添加相应的方法来启动和关闭WorkflowRuntime.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Workflow.Runtime;

    namespace WorkflowHost
    {
        
    public static class WorkflowFactory
        {
            
    //Singleton instance of the workflow runtime.
            private static WorkflowRuntime _workflowRuntime = null;
            
    //Lock (sync)object.
            private static object _syncRoot = new object();

            
    //Factory method.
            public static WorkflowRuntime GetWorkflowRuntime()
            { 
                
    //Lock execution thread in case of multi-threaded
                
    //(concurrent) access.
                lock (_syncRoot)
                { 
                    
    //Check for startup condition.
                    if (null == _workflowRuntime)
                    {
                        
    //Provide for shutdown
                        AppDomain.CurrentDomain.ProcessExit += new EventHandler(StopWorkflowRuntime);
                        AppDomain.CurrentDomain.DomainUnload 
    += new EventHandler(StopWorkflowRuntime);
                        
    //Not started, so create instance.
                        _workflowRuntime = new WorkflowRuntime();
                        
    //Start the runtime.
                        _workflowRuntime.StartRuntime();
                    }
    //if

                    
    //Return singleton instance.
                    return _workflowRuntime;
                }
    //lock
            }

            
    //Shutdown method
            static void StopWorkflowRuntime(object sender, EventArgs e)
            {
                
    if (_workflowRuntime != null)
                {
                    
    if (_workflowRuntime.IsStarted)
                    {
                        
    try
                        {
                            
    //Stop the runtime
                            _workflowRuntime.StopRuntime();
                        }
                        
    catch (ObjectDisposedException)
                        { 
                            
    //Already disposed of, so ignore
                        }//catch
                    }//if
                }//if
            }
        }
    }
  • 相关阅读:
    准备工作
    案例分析
    阅读任务
    准备工作
    案例分析作业
    情 202103226-1 编程作业
    阅读任务
    准备工作
    4 20210412-1 原型设计作业
    3 20210405-1 案例分析作业
  • 原文地址:https://www.cnblogs.com/volnet/p/931843.html
Copyright © 2011-2022 走看看