static IEnumerable <IPage> GetPages(ITextSource source) { var pagesText = source.GetPages().ToArray(); var numberOfPages = pagesText.Length; var pages = new IPage[numberOfPages]; var idx = Enumerable.Range(0, numberOfPages); idx.AsParallel().ForAll((i) => { pages[i] = GetPage(pagesText[i], i + 1); }); /*for (var page = 0; page < numberOfPages; page++) * { * pages[page] = GetPage(pagesText[page], page + 1); * }*/ return(pages); }