Пример #1
0
        public async Task <IEnumerable <BookFile> > GetBookFiles()
        {
            foreach (var reader in _readers)
            {
                _fileList.AddExtension(reader.Extension);
                _lookup.Add(string.Format(".{0}", reader.Extension), reader);
            }

            IEnumerable <string> list = await _fileList.GetFileList();

            _messages.Write("Found {0} files", list.Count());

            //var books = new List<BookFile>();
            //foreach (var path in list)
            //{
            //    BookFile book = await ReadBookFile(path);
            //    if (book != null)
            //        books.Add(book);
            //}

            var allBookTasks = list.Select(async path => await ReadBookFile(path));

            var allBooks = await Task.WhenAll(allBookTasks);

            var books = allBooks.Where(book => book != null).ToArray();

            return(books);
        }