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
}
他に方法はないのだろうか。求めすぎですか?