Beispiel #1
0
		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);
			}
		}