public StrategyExecutionResult ExecuteMany(IStrategy strategy, int dataCount, int executionCount) { List <StrategyExecutionResult> results = new List <StrategyExecutionResult>(); for (int i = 0; i < executionCount; i++) { results.Add(Execute(strategy, dataCount)); } StrategyExecutionResult result = new StrategyExecutionResult(); result.Error = results.Select(r => r.Error).Where(e => e.Length > 0).DefaultIfEmpty(string.Empty).FirstOrDefault(); result.ElapsedMillis = (long)results.Select(r => r.ElapsedMillis).Average(); return(result); }
static void Main(string[] args) { int dataCount = 100; int executionCount = 10; StrategyExecutor executor = new StrategyExecutor(); StrategyExecutionResult resultStrategyParallelForWithLock = executor.ExecuteMany(new StrategyParallelForWithLock(), dataCount, executionCount); StrategyExecutionResult resultStrategyParallelForWithQueue = executor.ExecuteMany(new StrategyParallelForWithQueue(), dataCount, executionCount); Console.Out.WriteLine("--------------------"); Console.Out.WriteLine("StrategyParallelForWithLock : " + resultStrategyParallelForWithLock); Console.Out.WriteLine("StrategyParallelForWithQueue : " + resultStrategyParallelForWithQueue); Console.In.ReadLine(); }