Зависание интерфейса Winforms

При вызове асинхронного метода парсинга с изменением прогрессбара зависает интерфейс. Ошибку в своем коде не вижу, вроде все должно в отдельном потоке выполняться, но виснет,пока не завершит парсинг. Может проблема в семафоре, который в предыдущем вопросе помог решить проблему?

Код с увеличением текущего значения (объект прогрессбара передается в метод класса и его переорпределенные варианты в наследниках):

 public virtual async Task GetData(int index, string url, HttpClient Client,SQLiteDbContext db, List<string> obj, List<string> exceptions, MetroProgressBar progressBar)
        {
            try
            {
                ParsingPatientsData? Ppatient = new();
                Ppatient = await GetJsonAsync<ParsingPatientsData>($"{url}/{obj[index]}", Client);
                Ppatient.PatientPath = $"{url}/{obj[index]}";
                Ppatient = ToString(ref Ppatient);
                Patients patient = new();
                patient = ConvertData(Ppatient, patient);
                    if(db.Patient.FindAsync(patient.ID).Result==null)
                        await db.Patient.AddAsync(patient);
                progressBar.Value += 1;
            }
            catch (Exception ex) { progressBar.Value += 1; exceptions.Add($"Ошибка:{ex.InnerException.Message}\nошибка в {url}/{obj[index]}"); }
        }

Код увеличивающий максимальное значение прогрессбара (также объект передается в метод класса):

 public async Task<int> DataGetter(string url, HttpClient Client, List<string> exceptions, MetroProgressBar progressBar)
        {
            var DataIDs = await GetJsonAsync<List<string>>(url, Client);
             progressBar.Maximum += DataIDs.Count; 
            Task[] DataTasks = new Task[DataIDs.Count];
            using(var db=new SQLiteDbContext())
            {
                for (var i = 0; i < DataTasks.Length; i++)
                {
                   DataTasks[i] = GetData(i, url, Client,db, DataIDs, exceptions, progressBar);
                }
                await Task.WhenAll(DataTasks);
                await db.SaveChangesAsync();
            }
            return DataIDs.Count;
        }

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