private void RunJob(string id) { var s = DependencyService.Get<IAppTask>(); if (id == "1") { task = new AppTask (); task.JobID = id; task.task = Task.Run<object> (async() => { for (int i = 0; i < 1000 && task.Token.IsCancellationRequested == false; i++) { await Task.Delay (1000, task.Token.Token); System.Diagnostics.Debug.WriteLine (i + "/" + id + "/[id:=" + id.ToString () + "]"); } return null; }, task.Token.Token); task.Complete = (x) => { Xamarin.Forms.Device.BeginInvokeOnMainThread (async () => { await DisplayAlert ("done", "done " + task.JobID, "Ok"); }); }; task.Error = (x) => { if (x is TaskCanceledException) { Xamarin.Forms.Device.BeginInvokeOnMainThread (async () => { await DisplayAlert ("Cancel", "Error " + task.JobID, "Ok"); }); } else { Xamarin.Forms.Device.BeginInvokeOnMainThread (async () => { await DisplayAlert ("Error", "Error " + task.JobID, "Ok"); }); } }; s.RunTask (task); } else { var t = new AppTask (); t.JobID = id; t.task = Task.Run<object> (async() => { for (int i = 0; i < 100; i++) { await Task.Delay (1000); System.Diagnostics.Debug.WriteLine (i + "/" + id + "/[id:=" + id.ToString () + "]"); } return null; }); t.Complete = (x) => { Xamarin.Forms.Device.BeginInvokeOnMainThread (async () => { await DisplayAlert ("done", "done " + t.JobID, "Ok"); }); }; s.RunTask (t); } }