/// <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); }