LINQ AsParallel
возвращает ParallelQuery
.Интересно, возможно ли изменить это поведение, чтобы я мог сравнить оператор LINQ, выполняемый с параллелизмом и без него без фактического изменения кода?Это поведение должно быть похоже на Debug.Assert
- когда директива препроцессора DEBUG
не установлена, она оптимизируется.Поэтому я бы хотел, чтобы AsParallel
возвращал тот же тип без преобразования в ParallelQuery
.
Полагаю, я могу объявить свой собственный метод расширения (поскольку я не могу переопределить AsParallel
) и проанализировать в нем директиву препроцессора:
public static class MyExtensions
{
#if TURN_OFF_LINQ_PARALLELISM
public static IEnumerable<T> AsControllableParallel<T>(this IEnumerable<T> enumerable)
{
return enumerable;
}
#else
public static ParallelQuery<T> AsControllableParallel<T>(this IEnumerable<T> enumerable)
{
return enumerable.AsParallel();
}
#endif
}
Интересно, есть ли какой-нибудьдругой путь.Я спрашиваю слишком много?