/// <summary>
        /// 调用CTP接口
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        protected int InvokeAPI(CTPTaskBase <TRequestAction> task)
        {
            int result = -1;

            try
            {
                result = InvokeAPI(this._instance, ConvertActionToInt(task.Action), task.Parameter, task.RequestID);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(result);
        }
        /// <summary>
        /// 追加查询任务
        /// </summary>
        /// <param name="para"></param>
        /// <param name="action"></param>
        protected void AddQueryTask(object para, TRequestAction action)
        {
            CTPTaskBase <TRequestAction> task = new CTPTaskBase <TRequestAction>();

            task.Action    = action;
            task.Parameter = para;


            lock (this.queryTasks)
            {
                this.queryTasks.Enqueue(task);
            }

            //立刻启动处理
            this.queryTaskTimer.Change(0, QueryTaskProcessPeriod);
        }
        /// <summary>
        /// 处理查询任务
        /// (20090918API中,对查询函数增加了时间限制,每秒钟只能查询一次)
        /// </summary>
        protected void ProcessQueryTask(object obj)
        {
            lock (this.queryTasks)
            {
                if (this.isDispose == true)
                {
                    this.queryTasks.Clear();
                }
                else if (this.queryTasks.Count > 0)
                {
                    //取得队列首位的任务
                    CTPTaskBase <TRequestAction> task = this.queryTasks.Peek();
                    task.RequestID = this.CreateRequestID();

                    int result = InvokeAPI(task);


                    //请求发送成功,则移除队列
                    if (result == 0)
                    {
                        this.queryTasks.Dequeue();

                        if (processedTasks.ContainsKey(task.RequestID) == false)
                        {
                            processedTasks.Add(task.RequestID, task);
                        }
                    }
                }

                //没有要处理的任务,则关闭计时器
                if (this.queryTasks.Count == 0)
                {
                    this.queryTaskTimer.Change(Timeout.Infinite, Timeout.Infinite);
                    return;
                }
            }
        }