public Java.Lang.Object AttachCompleter(CallbackToFutureAdapter.Completer completer) { var jobName = this.InputData.GetString(ShinyJobIdentifier); if (jobName.IsEmpty()) { completer.Set(Result.InvokeFailure()); } else { ShinyHost .Resolve <IJobManager>() .Run(jobName, this.cancelSource.Token) .ContinueWith(x => { switch (x.Status) { case TaskStatus.Canceled: completer.SetCancelled(); break; case TaskStatus.Faulted: Log.Write(x.Exception); completer.SetException(new Java.Lang.Throwable(x.Exception.ToString())); break; case TaskStatus.RanToCompletion: completer.Set(Result.InvokeSuccess()); break; } }); } return("AsyncOp"); }
public Object AttachCompleter(CallbackToFutureAdapter.Completer p0) { Log.Debug(TAG, $"Executing."); //Switch to background thread. Task.Run(async() => { //Perform a process here, simulated by a delay for 5 seconds. var delaySeconds = 5; var progress = 0; var progressIncrement = 100 / delaySeconds; var dataBuilder = new Data.Builder(); for (int i = 0; i < delaySeconds + 1; i++) { await Task.Delay(1000); progress += progressIncrement; dataBuilder.PutInt("Progress", progress); SetProgressAsync(dataBuilder.Build()); } Log.Debug(TAG, "Completed."); //Set a Success Result on the completer and return it. return(p0.Set(Result.InvokeSuccess())); }); return(TAG); }
public Java.Lang.Object AttachCompleter(CallbackToFutureAdapter.Completer p0) { Log.Debug(TAG, $"Executing."); //Switch to background thread. Xamarin.Forms.Device.StartTimer(new TimeSpan(0, 0, 5), () => { Toast.MakeText(context, "Oh Greeter Service is Destroyed.", ToastLength.Long).Show(); return(true); }); //Task.Run(async () => //{ // //Perform a process here, simulated by a delay for 5 seconds. // Toast.MakeText(context, "Oh Greeter Service is Destroyed.", ToastLength.Long).Show(); // await Task.Delay(5000); // Log.Debug(TAG, "Completed."); // //Set a Success Result on the completer and return it. // return p0.Set(Result.InvokeSuccess()); //}); return(TAG); }
public Java.Lang.Object AttachCompleter(CallbackToFutureAdapter.Completer p0) { Task.Run(async() => { for (int i = 0; i < 20; i++) { await Task.Delay(TimeSpan.FromSeconds(1)); SetProgressAsync(new Data.Builder().PutInt("progress", i * 5).Build()); } return(p0.Set(Result.InvokeRetry())); }); return("MyListenableWorker"); }
Object CallbackToFutureAdapter.IResolver.AttachCompleter(CallbackToFutureAdapter.Completer p0) { try { var scheduler = TaskScheduler.FromCurrentSynchronizationContext(); Task.Run(async() => { Log.Debug("Starting Worker {Name}", GetType().FullName); return(await DoWorkAsync(_cts.Token)); }, _cts.Token) .ContinueWith(previous => { if (previous.IsCompletedSuccessfully) { Log.Trace(previous.Exception, "Worker {Name} completed successfully", GetType().FullName); p0.Set(Result.InvokeSuccess(previous.Result)); } else { if (previous.IsCanceled) { Log.Trace(previous.Exception, "Worker {Name} was cancelled", GetType().FullName); p0.SetCancelled(); } if (previous.IsFaulted) { Log.Error(previous.Exception, "Worker {Name} raised an exception", GetType().FullName); p0.SetException(new Error(previous.Exception?.ToString() ?? "Unknown cause")); } } }, _cts.Token, TaskContinuationOptions.None, scheduler); } catch (Exception e) { Log.Error(e, "Worker {Name} raised an exception", GetType().FullName); } return(GetCompletionTag() as Object); }
public Java.Lang.Object AttachCompleter(CallbackToFutureAdapter.Completer completer) { var jobName = this.InputData.GetString(ShinyJobIdentifier); var jobManager = ShinyHost.Resolve <IJobManager>(); //if (jobManager != null && !jobName.IsEmpty()) if (jobName.IsEmpty() || jobManager == null) { //completer.Set(Result.InvokeFailure()); completer.Set(Result.InvokeSuccess()); } else { jobManager .Run(jobName, this.cancelSource.Token) .ContinueWith(x => { switch (x.Status) { case TaskStatus.Canceled: completer.SetCancelled(); break; case TaskStatus.Faulted: ShinyHost .LoggerFactory .CreateLogger <ILogger <IJobManager> >() .LogError(x.Exception, "Error in job"); completer.SetException(new Java.Lang.Throwable(x.Exception.ToString())); break; case TaskStatus.RanToCompletion: completer.Set(Result.InvokeSuccess()); break; } }); } return("AsyncOp"); }