Не скачиваются файлы, зависает поток

Либо зависает поток, либо пишет, что доступ к этому файлу заблокирован другим потоком. Хотя этого быть не может, т.к я использую using

Там проектик не большой, который я постоянно использую для разных парсингов сайта. Поэтому код может быть грязноватый.

Можете сами посмотреть, просто создав папку Work на диске C

https://github.com/gokor8/Portak/tree/master

Я знаю, что бесполезно закрывать поток в using но сделал на всякий случай, для проверки.

Ошибку выдает в классе HttpClient в методах Download.

Вот так это выглядит, когда он виснет введите сюда описание изображения

Сама ошибка: введите сюда описание изображения

Класс в котором ошибка

public static class HttpClass
    {
        public static readonly string FirstPathLink;
        static int NumberImage = 0;
        public static readonly string SiteName;

        public static CookieContainer CookieContainer;
        private static HttpClientHandler handler;
        public static HttpClient Client;

        private static IConfiguration config;
        public static IBrowsingContext Context;

        static HttpClass()
        {
            CookieContainer = new CookieContainer();
            handler = new HttpClientHandler() { CookieContainer = CookieContainer };
            Client = new HttpClient(handler)
            {
                Timeout = TimeSpan.FromMinutes(3),
                BaseAddress = new Uri("https://www.arrex.it/en/")
            };

            config = Configuration.Default;
            Context = BrowsingContext.New(config); //Client.Timeout = TimeSpan.FromMinutes(30);

            Client.DefaultRequestHeaders.Add("User-Agent", "Calam");
            SiteName = Cutter.Tram(Client.BaseAddress.Host.Replace(".", "").Replace(",", "") + 1);
            FirstPathLink = "https://" + Client.BaseAddress.Host + "/";
        }

        public static async Task<string> Download(string link)
        {
            string image = link;
            string konec1 = image.Substring(image.LastIndexOf("."), image.Length - image.LastIndexOf("."));

            if (!image.Contains("http"))
                image = FirstPathLink + image;

            Directory.CreateDirectory($@"C:\Work\{SiteName}\" + ExcelContainer.NA);

            string gg = "";

            var sourceStream = await Client.GetStreamAsync(new Uri(image));
            using (var targetStream = File.Create($@"C:\Work\{SiteName}\" + ExcelContainer.NA + @"\" + NumberImage + konec1))
            {
                await sourceStream.CopyToAsync(targetStream);
            }

            gg = $"/upload/staff/upload/staff/{SiteName}/" + ExcelContainer.NA + "/" + NumberImage + konec1 + ";\r\n";
            NumberImage++;
            return gg;
        }

        public static async Task<string> Download(string link, string konec1)
        {
            string image = link;

            if (!image.Contains("http"))
                image = FirstPathLink + image;

            Directory.CreateDirectory($@"C:\Work\{SiteName}\" + ExcelContainer.NA);

            string gg = "";

            var sourceStream = await Client.GetStreamAsync(new Uri(image));
            using (var targetStream = File.Create($@"C:\Work\{SiteName}\" + ExcelContainer.NA + @"\" + NumberImage + konec1))
            {
                await sourceStream.CopyToAsync(targetStream);
            }

            gg = $"/upload/staff/upload/staff/{SiteName}/" + ExcelContainer.NA + "/" + NumberImage + konec1 + ";\r\n";
            NumberImage++;
            return gg;
        }
    }

Ответы (0 шт):