Почему метод ReadPlanAsync выполняется 2 раза?

Почему метод ReadPlanAsync выполняется 2 раза в WPF application Net 5? Я не могу понять, почему это происходит.

public MainWindow()
{ 
    _ = ReadCustomerAsync().ContinueWith(t => 
    ReadPlanAsync(),TaskContinuationOptions.ExecuteSynchronously);
}

private async Task ReadCustomerAsync()
{
     //obj указать предикат для поиска            
     VisibilityProgressBar = Visibility.Visible;

     await Task.Run(() =>
     {
         ReadCustomer();
     }).ContinueWith(t =>
     {
         VisibilityProgressBar = Visibility.Hidden;
         OnPropertyChanged(nameof(StatusText));
     });
}

private async Task ReadPlanAsync(string text = null)
        {
            //obj указать предикат для поиска
            if (SelectedCustomer == null || SelectedYear == default(Data))
                return;
            
            VisibilityProgressBar = Visibility.Visible;
            StatusText = string.Empty;

            SetNormalFontWeights();

            await Task.Run(() =>
            {
                ReadPlan(text);
            })
            .ContinueWith(task =>
            {
                if (Jobs.Count > 0)
                    SetCurrentData();

                VisibilityProgressBar = Visibility.Hidden;
                OnPropertyChanged(nameof(StatusText));
            });
        }

private void ReadCustomer()
        {
            try
            {
                StatusText = string.Empty;
                using DbProjectsContext dbContext = new();

                var customers = dbContext.Customers?.OrderBy(o => o.Id)
                                                   ?.DistinctBy(d => d.Name)
                                                   ?.ToList();

                Customers = new ObservableCollection<Customers>(customers);
                SelectedCustomer = customers.FirstOrDefault();

                StatusText = Customers.Count > 0 ? "Данные прочитаны из БД!" : "Нет данных!";
            }
            catch (Exception exc)
            {
                StatusText = "Ошибка при чтении данных из БД!" + exc.Message;
            }
            finally { }
        }

 private void ReadPlan(string text = null)
             {
                 try
                 {               
                     using DbProjectsContext dbContext = new();
     
                     Func<Jobs, bool> func = null;
     
                     if (!string.IsNullOrWhiteSpace(text))
                     {
                         var textSplit = text.Split('%', StringSplitOptions.RemoveEmptyEntries);
     
                         if (textSplit.Count() == 1)
                         {
                             text = text.ToLower().Trim();
     
                             func = f => !string.IsNullOrEmpty(f.Name) && f.Name.ToLower().Trim().Contains(text) ||
     (!string.IsNullOrEmpty(f.ProjectCode) &&
     f.ProjectCode.ToLower().Trim().Contains(text));
                         }
                         else if (textSplit.Count() == 2)
                         {
                             var nameStr = textSplit.FirstOrDefault();
                             var codeStr = textSplit.LastOrDefault();
     
                             var _name = nameStr.ToLower().Trim();
                             var _code = codeStr.ToLower().Trim();
     
                             func = f => !string.IsNullOrEmpty(f.Name) && !string.IsNullOrEmpty(f.ProjectCode) &&
     (f.Name.ToLower().Trim().Contains(_name) ||
     f.ProjectCode.ToLower().Trim().Contains(_code));
                         }
                         else
                         {
                             func = f => true;
                         }
                     }
                     else
                     {
                         func = f => true;
                     }
     
                     var jobs = dbContext.Jobs.Include(i => i.Parent)
                                              .Include(i => i.Customer)
                                             ?.Where(w => w.Date.Year == SelectedYear.DateTime.Year && w.CustomerId == SelectedCustomer.Id)
                                             ?.Where(func)
                                             ?.OrderBy(o => o.OrderNumber)
                                             ?.ToList();
     
                     FindChilds(jobs);
     
                     Jobs = new ObservableCollection<Jobs>(jobs);
     
                     StatusText = Jobs.Count > 0 ? "Данные прочитаны из БД!" : "Нет данных!";
                 }
                 catch (Exception exc)
                 {
                     StatusText = "Ошибка при чтении данных из БД!" + exc.Message;
                 }
                 finally { }
             }

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