public virtual CommandItem <WSCommandTypeBase> SendCommandSync(WSCommandTypeBase command, TimeSpan timeout) { if (command == null) { return(null); } command.RequestID = Guid.NewGuid(); Session.LastRequestTime = DateTime.Now; CommandItem <WSCommandTypeBase> ci = new CommandItem <WSCommandTypeBase>() { CommandRequest = command, CommandResponse = null, RetryCount = 0, ResponseCallback = null, RequestTime = DateTime.Now, IsSync = true, Wait = new System.Threading.AutoResetEvent(false) }; lock (SyncLocker) { Commands.Add(ci); } logger.Trace("发送命令:{0}", command.CommandName); Session.SendMessage(command.ToBinary(), command.TransferEncoder); ci.Wait.WaitOne(timeout); return(ci); }
public virtual void SendCommand(WSCommandTypeBase command, CommandResponse callback) { if (command == null) { return; } command.RequestID = Guid.NewGuid(); Session.LastRequestTime = DateTime.Now; lock (SyncLocker) { Commands.Add(new CommandItem <WSCommandTypeBase>() { CommandRequest = command, CommandResponse = null, RetryCount = 0, ResponseCallback = callback, RequestTime = DateTime.Now, IsSync = false }); } logger.Trace("发送命令:{0}", command.CommandName); Session.SendMessage(command.ToBinary(), command.TransferEncoder); }