/// <summary>
 /// 移除指定监听者
 /// </summary>
 /// <param name="callback"></param>
 public void RemoveListen(Action callback)
 {
     EventDispatcher.RemoveEventListener(listenableId, callback);
     ///依旧还有别的地方在进行监听
     if (!EventDispatcher.ContainEvent(listenableId))
     {
         listenableDict.Remove(eventToListen);
     }
 }
        /// <summary>
        /// 请求异步事件
        /// </summary>
        /// <param name="requestType"></param>
        /// <param name="requestArgs"></param>
        /// <param name="responseType"></param>
        /// <param name="handler"></param>
        /// <param name="timeOut"></param>
        public static void Request(string requestType, ArrayList requestArgs, string responseType, Action <ArrayList> handler, float timeOut = 2)
        {
            string responseString = responseType + "Request";
            //处理返回动作
            Action <ArrayList> responseHandler = null;

            CoroutineTaskManager.CoroutineTask task = null;
            responseHandler = (array) => {
                handler(array);
                EventDispatcher.RemoveEventListener <ArrayList>(responseString, responseHandler);
                task.Stop();
            };
            //监听返回行为
            EventDispatcher.AddEventListener <ArrayList>(responseString, responseHandler);
            //出发请求事件
            EventDispatcher.TriggerEvent <ArrayList>(requestType, requestArgs);
            //处理超时情况
            task = CoroutineTaskManager.Instance.WaitSecondTodo(() =>
            {
                Debug.logger.LogError("Request", requestType + "request Timeout!");
                EventDispatcher.RemoveEventListener <ArrayList>(responseString, responseHandler);
            }, timeOut);
        }