Я рассматриваю возможность создания собственного метода расширения PLinq, чтобы обеспечить функцию, описанную в моем недавнем вопросе: Specify task timeout in parallel linq to objects. Я хотел бы повторно использовать как можно большую существующую структуру .Net, включая любой код, который уже может указывать степень параллелизма в запросе PLinq.Прочитать степень параллелизма в методе расширения PLinq
В приведенном ниже блоке кода я указываю степень параллелизма. Предполагая, что CustomForAll является настраиваемым методом расширения PLinq с той же сигнатурой, что и существующий метод ForAll, как бы я прочитал степень параллелизма, указанную в TSource?
private PictureList FetchPictures(List<Picture> wallResults)
{
wallResults
.AsParallel()
.WithDegreeOfParallelism(10)
.CustomForAll(delegate(Picture p){
Почему вы не можете использовать стандартную реализацию «ForAll»? –
@ReedCopsey - Я хочу реализовать тайм-ауты для каждой задачи, а не токен отмены, который охватывает все задачи (см. Комментарии к моему связанному вопросу). – Peter
Просто создайте его в 'Action