/// <summary>
        /// 创建一个流程配置,并注册到管道事件
        /// </summary>
        /// <param name="process"></param>
        /// <param name="callback"></param>
        public void SetProcess(ProcessConfigureBase process, ProcessConfigureBase callback = null)
        {
            process.Key = Guid.NewGuid().ToString();
            Processes.Enqueue(process);
            var thiscallback = new ConcurrentStack <ProcessConfigureBase>();

            if (CallbackList.TryGetValue(lastProcessesKey, out ConcurrentStack <ProcessConfigureBase> lastcallback))
            {
                foreach (var item in lastcallback)
                {
                    thiscallback.Push(item);
                }
            }
            lastProcessesKey = process.Key;
            if (callback != null)
            {
                thiscallback.Push(callback);
            }
            CallbackList.TryAdd(lastProcessesKey, thiscallback);
        }
 public EventProcessManagerPipline(ILogger logger, EventProcessManagerPipline pipline)
 {
     this.logger    = logger;
     this.Key       = pipline.Key;
     this.Processes = new ConcurrentQueue <ProcessConfigureBase>();
     foreach (var item in pipline.GetProcessee())
     {
         Processes.Enqueue(item);
     }
     ;
     this.CallbackList = new ConcurrentDictionary <string, ConcurrentStack <ProcessConfigureBase> >();
     foreach (var item in pipline.GetCallbackList())
     {
         var callbacklist  = new List <ProcessConfigureBase>();
         var callbackstack = new ConcurrentStack <ProcessConfigureBase>();
         foreach (var child in item.Value)
         {
             callbacklist.Add(child);
         }
         callbacklist.Reverse();//由于是从栈复制到栈,所以这里需要进行一次反转
         callbacklist.ForEach(x => callbackstack.Push(x));
         CallbackList.TryAdd(item.Key, callbackstack);
     }
 }