Комбинация параллели и асин c не имеет большого смысла. Целью параллелизма является одновременное использование нескольких процессоров / ядер, тогда как асинхронность заключается в том, чтобы вообще не использовать ресурсы ЦП.
AsParallel
( PLINQ ) используется с IEnumerable
s в тех случаях, когда перечисление IEnumerable
требует значительных ресурсов процессора. Другими словами, когда необходимо выполнить много-много инструкций ЦП между одним вызовом MoveNext
и следующим. При IAsyncEnumerable
s задержка (обычно) не вызвана вызовом самого метода MoveNextAsync
, а ожиданием возвращенного ValueTask
. Ожидание ожидаемого объекта потребляет ноль ресурсов ЦП. И вы не можете контролировать, когда это будет завершено. Взять, к примеру, Task.Delay(1000)
. Он завершится не раньше, чем через секунду, и вы не сможете заставить его завершиться за полсекунды, если не найдете способ как-нибудь согнуть spacetime . ?