/// <summary>
            /// 市场状态查询应答
            /// </summary>
            /// <param name="rsp"></param>
            /// <param name="islast"></param>
            void OnQueryExchangeState(/*TEsExchangeStateRspField*/ IntPtr rsp, bool islast)
            {
                TEsExchangeStateRspField data = PInvokeUtility.GetObjectFromIntPtr <TEsExchangeStateRspField>(rsp);

                this.trader.exchangeStateList.Add(data);

                Trace.WriteLine(string.Format("【市场状态查询应答】{0} : {1} {2}", data.Exchange, data.ExchangeDateTime, data.ExchangeState));

                if (islast == true)
                {
                    EventProcessor.BeginInvoke(this.trader.QueryExchangeStateResponse, this.trader, new EsunnyEventArgs <List <TEsExchangeStateRspField> >(this.trader.exchangeStateList));
                }
            }
            /// <summary>
            /// 组合合约查询应答
            /// </summary>
            /// <param name="rsp"></param>
            /// <param name="islast"></param>
            void OnQueryCmbContract(/*TEsCmbContractRspField*/ IntPtr rsp, bool islast)
            {
                if (rsp != IntPtr.Zero)
                {
                    TEsCmbContractRspField data = PInvokeUtility.GetObjectFromIntPtr <TEsCmbContractRspField>(rsp);
                    this.trader.combinContractList.Add(data);

                    Trace.WriteLine(string.Format("【组合合约查询应答】{0} : {1} {2}", data.Exchange, data.CmbType, data.Contract1 + "/" + data.Contract2));
                }

                if (islast == true)
                {
                    EventProcessor.BeginInvoke(this.trader.QueryCmbContractResponse, this.trader, new EsunnyEventArgs <List <TEsCmbContractRspField> >(this.trader.combinContractList));
                }
            }
            /// <summary>
            /// 持仓查询应答
            /// </summary>
            /// <param name="rsp"></param>
            /// <param name="islast"></param>
            void OnQueryHold(/*TEsHoldRspField*/ IntPtr rsp, bool islast)
            {
                if (rsp != IntPtr.Zero)
                {
                    TEsHoldRspField data = PInvokeUtility.GetObjectFromIntPtr <TEsHoldRspField>(rsp);
                    this.trader.holdList.Add(data);

                    Trace.WriteLine(string.Format("【持仓查询应答】{0} : {1} {2}", data.Contract1, data.HoldPrice, data.HoldVol));
                }

                if (islast == true)
                {
                    EventProcessor.BeginInvoke(this.trader.QueryHoldResponse, this.trader, new EsunnyEventArgs <List <TEsHoldRspField> >(this.trader.holdList));
                }
            }
            /// <summary>
            /// 商品查询应答
            /// </summary>
            /// <param name="rsp"></param>
            /// <param name="islast"></param>
            void OnQueryCommodity(/*TEsCommodityRspField*/ IntPtr rsp, bool islast)
            {
                if (rsp != IntPtr.Zero)
                {
                    TEsCommodityRspField data = PInvokeUtility.GetObjectFromIntPtr <TEsCommodityRspField>(rsp);
                    this.trader.commodityList.Add(data);


                    Trace.WriteLine(string.Format("【商品查询应答】{0} : {1} {2}", data.Exchange, data.Name, data.Commodity));
                }

                if (islast == true)
                {
                    EventProcessor.BeginInvoke(this.trader.QueryCommodityResponse, this.trader, new EsunnyEventArgs <List <TEsCommodityRspField> >(this.trader.commodityList));
                }
            }
            /// <summary>
            /// 委托查询应答
            /// </summary>
            /// <param name="rsp"></param>
            /// <param name="islast"></param>
            void OnQueryOrder(/*TEsOrderInsertRspField*/ IntPtr rsp, bool islast)
            {
                if (rsp != IntPtr.Zero)
                {
                    TEsOrderInsertRspField data = PInvokeUtility.GetObjectFromIntPtr <TEsOrderInsertRspField>(rsp);
                    this.trader.orderList.Add(data);


                    Trace.WriteLine(string.Format("【委托查询应答】{0} : {1} {2}", data.ReqData.Contract1, data.OrderNo, data.OrderState));
                }

                if (islast == true)
                {
                    EventProcessor.BeginInvoke(this.trader.QueryOrderResponse, this.trader, new EsunnyEventArgs <List <TEsOrderInsertRspField> >(this.trader.orderList));
                }
            }
            void OnLogin(TEsRspField rsp)
            {
                if (rsp.ErrorCode == 0)
                {
                    this.trader.isLogin = true;

                    StringBuilder s = new StringBuilder();
                    EsunnyWrapper.InvokeAPI(this.trader._instance, EsunnyWrapperAction.GetTradingDay, s);

                    Trace.WriteLine("交易日:" + s);
                }
                else
                {
                    PInvokeUtility.GetUnicodeString(rsp.ErrorInfo);
                    this.trader.isLogin = false;
                }


                EventProcessor.BeginInvoke(this.trader.LoginResponse, this.trader, new EsunnyEventArgs <TEsRspField>(rsp));
            }