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