protected async Task HandleValidSubmit() { try { CalculationStatus = new CalculationStatusViewModel(); IsCalculating = true; var jobId = await CalculatorService.StartCalculation(CalculationRequest); await Task.Run(() => // TODO: make it cancelable ! { CalculationResponse statusObject; do { statusObject = CalculatorService.GetCalculationStatus(jobId).Result; CalculationStatus.Status = statusObject.Status.ToString(); CalculationStatus.Progress = $"{ statusObject.Progress } %"; InvokeAsync(() => StateHasChanged()); } while (statusObject.Status == Models.CalculationStatus.Running); if (statusObject.Status == Models.CalculationStatus.Completed) { CalculationStatus.Outcome = statusObject.Outcome; } }); } finally { IsCalculating = false; StateHasChanged(); } }
public CalculatorPageBase() { CalculationRequest = new CalculationRequest(); CalculationStatus = new CalculationStatusViewModel(); }