private void WebView_Navigated(object sender, WebNavigatedEventArgs e) { try { //Action onFinish = new Action(() => { Navigation.PushAsync(new Page1()); Navigation.RemovePage(this); }); Action onFinish = new Action(() => { buttonContinue.IsVisible = true; }); var thread = new Thread(async() => { await Task.Delay(30 * 1000); //wait 30 seconds before start measuring TestMeViewModel b = new TestMeViewModel(); b.Progress = 0; MeasurementHandler.GetStressResult(-1, b); while (b.IsFinished == false) { if (b.StressResult.StartsWith("Error")) { //TODO: alert user and try again return; } } //int repetitionTime = MeasurementHandler.measureRepetitionTime; //DependencyService.Get<ISchedule>().ScheduleMeasurement(repetitionTime); //Schedule measurement every 6 minutes Xamarin.Forms.Device.BeginInvokeOnMainThread(onFinish); }); thread.Start(); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private void StartMeasure(int pseudo) { TestMeViewModel b = (TestMeViewModel)BindingContext; b.PNN50 = 0; //don't make the UI thread wait var thread = new Thread( () => { MeasurementHandler.GetStressResult(pseudo, b); }); b.Progress = 0; thread.Start(); double msPass = 0; int testTime = MeasurementHandler.testTimeInSec; Device.StartTimer(TimeSpan.FromMilliseconds(50), () => { if (b.Progress < 1) { msPass += 50; b.Progress = msPass <= testTime * 1000 ? msPass / (testTime * 1000) : (msPass - 1) / msPass; if (b.StressResult.StartsWith("Error")) { return(false); } return(true); } if (isSignup) { if (b.StressResult.StartsWith("you")) //succeeded { Device.BeginInvokeOnMainThread(async() => { await Navigation.PushAsync(new Pages.SignupStressTest()); Navigation.RemovePage(this); //user can't go back}); }); return(false); } return(true); } else { return(false); } }); }