/// <summary> /// Запускает методы сортировки с идентификаторами из methodIDs для массива array. /// </summary> /// <param name="methodIDs">Список содержащий идентификаторы методов которые требуется запустить</param> /// <param name="array">Массив для сортировки</param> /// <returns>Список результатов вызова методов</returns> public static List <MethodInfo> RunMethods(List <int> methodIDs, int[] array) { List <MethodInfo> decRes = new List <MethodInfo>(); // Бежим по всем полученым делегатам и вызываем данные методы. for (int i = 0; i < methodIDs.Count; i++) { // РУСЯ: плс сделай понормальному сам видишь как это некрасиво try { MethodInfo_Pair methodInputInfo = new MethodInfo_Pair(Methods.DicIdName[methodIDs[i]], Methods.DicMetSor[Methods.DicIdName[methodIDs[i]]]); decRes.Add(RunMethod(methodInputInfo, Utilits.CopyArray(array))); } catch (IndexOutOfRangeException e) { decRes.Add(ExceptionOutOfRangeMethodInfo); } catch (Exception e) { decRes.Add(ExceptionErrorMethodInfo); } } return(decRes); }
// Вызывает метод из пары "метод+имя" methodInputInfo для массива array. private static MethodInfo RunMethod(MethodInfo_Pair methodInputInfo, int[] array) { MethodInfo outStruct; int[] sortedArray; Stopwatch timer = new Stopwatch(); timer.Start(); sortedArray = methodInputInfo.Value(array); timer.Stop(); outStruct.name = methodInputInfo.Key; outStruct.time = (int)timer.Elapsed.TotalSeconds; // Время в секундах. outStruct.capacity = sortedArray.Length; // Спорный вопрос: на кой черт метод возвращает размер обработанного массива, // если мы вызываем все методы для одного массива за раз и этот размер не меняется со временем. System.Threading.Thread.Sleep(3); // даем потоку передохнуть if (CloseMethod != null) { CloseMethod.Invoke(); } return(outStruct); }