public async Task Worker(string wwwroot) { for (int i = parserSettings.StartPoint; i <= parserSettings.EndPoint; i++) { if (IsActive) { HtmlParser domParser = new HtmlParser(); string source = await loader.GetSourceByPage(i); IHtmlDocument document = await domParser.ParseDocumentAsync(source); T idList = parser.GetCarIdsList(document); List <IHtmlDocument> documents = new List <IHtmlDocument>(); string[] sourceArray = await loader.GetSourcesByCarIds((string[])(object)idList); // очень долго отрабатывает foreach (var item in sourceArray) { documents.Add(await domParser.ParseDocumentAsync(item)); } await parser.ParseCarDetailsAsync(documents, (string[])(object)idList); List <IHtmlDocument> photoDocuments = new List <IHtmlDocument>(); string[] sourcePhotoArray = await loader.GetPhotoSourcesByCarIds((string[])(object)idList); foreach (var item in sourcePhotoArray) { photoDocuments.Add(await domParser.ParseDocumentAsync(item)); } await parser.ParseCarPhotosAsync(photoDocuments, (string[])(object)idList, wwwroot); //OnNewData?.Invoke(this, result); } } OnComplited?.Invoke(this); isActive = false; }