public async Task LoadData(DsRequest Request, bool resetChart = true) { await semaphoreSlim.WaitAsync(); try { if (isLoading == false) { isLoading = true; await InvokeAsync(() => StateHasChanged()); } response = await dataService.LoadData(Request); if (response != null) { Request.Responses.Add(response); isDataAvailable = true; if (resetChart) { SetChartData(); if (Request.doReloadSelected && Request.CmdrsSelected != null) { var cmdrsSelected = Request.CmdrsSelected.Where(x => x.Selected && x.Name != Request.Interest); if (cmdrsSelected.Any()) { foreach (var cmdr in cmdrsSelected) { var cmdrrequest = new DsRequest(Request.Mode, Request.Timespan, Request.Player, cmdr.Name); var cmdrresponse = await dataService.LoadData(cmdrrequest); ChartService.AddChartDataSet(_config, cmdrrequest, cmdrresponse); chartComponent.Update(); } } } } } else { Info = "Failed loading data :("; } } catch (Exception e) { logger.LogError($"failed loading data: {e.Message}"); } finally { semaphoreSlim.Release(); } isLoading = false; await InvokeAsync(() => StateHasChanged()); }