LINQ 的AsParallel
回报ParallelQuery
。我想知道是否有可能改变这种行为,以便我可以在不实际更改代码的情况下比较使用和不使用并行性运行的 LINQ 语句?这种行为应该类似于Debug.Assert
- 当DEBUG
未设置预处理器指令时,它会被优化。所以我希望能够在AsParallel
不将其转换为ParallelQuery
.
我想我可以声明自己的扩展方法(因为我不能 override 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
}
我想知道是否还有其他方法。我要求太多了吗?