private void Calculate(InputData inputData, CalculateConfig config) { CalculateBase service; switch (inputData.DataType) { case DataType.Yilei: inputData.RandP = _sameRandomNumber1; service = new Ph1Ph2Pv(); break; case DataType.Erlei: inputData.RandP = _sameRandomNumber2; service = new Ph1PvPh2(); break; case DataType.Sanlei: inputData.RandP = _sameRandomNumber3; service = new PvPh1Ph2(); break; default: service = null; break; } if (config.RandomNumberType == RandomNumberType.RandomNumberPerRecord) { var random = new ThreadSafeRandom(); var rp = (inputData.RandomNumberEnd - inputData.RandomNumberStart) * random.NextDouble(); inputData.RandP = rp + inputData.RandomNumberStart; } service?.ParallelRun(config, inputData); _recordStack.Add(inputData); }