private void ExecuteRequests(ref ReadWriteRequest[] values, string parentID, SplitAndJoin splitAndJoin) { try { List <object>[] resposeValuesList = new List <object> [values.Length]; byte messageEnumerator = (byte)splitAndJoin.allRequestsList.Count; for (int i = 0; i < splitAndJoin.allRequestsList.Count; i++) { ReadWriteRequest[] requestToExec = splitAndJoin.allRequestsList[i].ToArray(); ReadWriteOperandsCommand(ref requestToExec, parentID, messageEnumerator); messageEnumerator--; } if (this.BreakFlag) { throw new ComDriveExceptions("Request aborted by user", ComDriveExceptions.ComDriveException.AbortedByUser); } for (int i = 0; i < values.Length; i++) { if (values[i] is ReadOperands) { if (values[i].ResponseValues != null) { resposeValuesList[i] = new List <object>(); resposeValuesList[i].AddRange(values[i].ResponseValues as object[]); } } } for (int i = 0; i < splitAndJoin.splitDetailsList.Count; i++) { int userReqPos = splitAndJoin.splitDetailsList[i].userRequestPosition; int allReqPos = splitAndJoin.splitDetailsList[i].allRequestsPosition; int splitReqPos = splitAndJoin.splitDetailsList[i].splitRequestPosition; if (values[userReqPos] is WriteOperands) { values[userReqPos].ResponseValues = String.Empty; } else { if (resposeValuesList[userReqPos] == null) { resposeValuesList[userReqPos] = new List <object>(); resposeValuesList[userReqPos] .AddRange( splitAndJoin.allRequestsList[allReqPos][splitReqPos].ResponseValues as object[]); } else { object[] responseValues = splitAndJoin.allRequestsList[allReqPos][splitReqPos].ResponseValues as object[]; resposeValuesList[userReqPos].AddRange(responseValues); } } } for (int i = 0; i < splitAndJoin.splitDetailsList.Count; i++) { int userReqPos = splitAndJoin.splitDetailsList[i].userRequestPosition; int allReqPos = splitAndJoin.splitDetailsList[i].allRequestsPosition; int splitReqPos = splitAndJoin.splitDetailsList[i].splitRequestPosition; if (values[userReqPos] is ReadOperands) { values[userReqPos].ResponseValues = resposeValuesList[userReqPos].ToArray(); } } } catch (Exception) { throw; } finally { splitAndJoin.ClearLists(); } }