public ResponseData <IEnumerable <IdFiled> > DoStreamRange(params string[] @params) { @params.KeyCheck(); ResponseData <IEnumerable <IdFiled> > result = new ResponseData <IEnumerable <IdFiled> >() { Type = ResponseType.Empty, Data = "未知的命令" }; try { result = TaskHelper.Run((token) => { lock (SyncRoot) { RedisCoder.Request(RequestType.XRANGE, @params); var sresult = RedisCoder.StreamRangeDecoder(token); if (sresult != null && sresult.Type == ResponseType.Redirect) { return((ResponseData <IEnumerable <IdFiled> >)OnRedirect.Invoke(sresult.Data, OperationType.DoBatchWithParams, RequestType.XRANGE, @params)); } else { return(sresult); } } }, _actionTimeout).Result; } catch (TaskCanceledException tex) { result.Type = ResponseType.Error; result.Data = "Action Timeout"; } catch (Exception ex) { result.Type = ResponseType.Error; result.Data = ex.Message; } return(result); }