Пример #1
0
        private async Task FindLinksAsync(Uri parentUri, HtmlDocument document, IConstraint constraint, int depth)
        {
            IEnumerable <string> links = document.GetLinksFromTagsA();
            int lowerDepth             = --depth;
            var tasks = new List <Task>();

            foreach (string link in links)
            {
                if (!FilterLink(link))
                {
                    continue;
                }

                Uri uri = CreateUri(parentUri, link);

                if (!_visitedUris.Contains(uri) && constraint.IsHtmlLinkPermissible(uri, parentUri))
                {
                    _visitedUris.Add(uri);
                    tasks.Add(DownloadWebpageAsync(uri, constraint, lowerDepth));
                }
            }

            await Task.WhenAll(tasks);
        }