/// <summary>
        /// 等待指定命令回复
        /// </summary>
        /// <param name="responseCommand">指定命令</param>
        /// <param name="timeout">最长等待时间</param>
        /// <returns></returns>
        public TPKGHead WaitTerminalResponse(string tid, uint?token, int timeout = 30000)
        {
            TerminalResponseWaitItemKey key = new TerminalResponseWaitItemKey()
            {
                TerminalId = tid,
                SessionId  = token
            };

            var item = new WaitItem <TerminalResponseWaitItemKey, TPKGHead>(key, timeout);

            cache.AddWaitItem(key, item);
            item.WaitOne();
            cache.Remove(key);
            return(item.Result);
        }
        public bool FireWaitHandle(TPKGHead data)
        {
            if (data == null || cache.IsEmpty)
            {
                return(false);
            }

            WaitItem <TerminalResponseWaitItemKey, TPKGHead> item;
            TerminalResponseWaitItemKey key = new TerminalResponseWaitItemKey()
            {
                TerminalId = data.Term_Code,
                SessionId  = data.SessionId,
            };

            if (cache.TryGetWaitItem(key, out item) && item != null)
            {
                item.Result = data;
                item.Set();
                return(true);
            }
            return(false);
        }