Пример #1
0
        public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
        {
            _cts = new CancellationTokenSource();

            Task.Run(async() =>
            {
                try
                {
                    // Option #1: Using PCL project service with Dependency Injection
                    await MediaService.Instance.UploadPendingVideos();
                }
                catch (Exception ex)
                {
                    var errorMessage = new VideoUploadResponseMessage
                    {
                        HasErrors = true,
                        Message   = "ERROR: " + ex.Message
                    };

                    Device.BeginInvokeOnMainThread(() => MessagingCenter.Send(errorMessage, "UploadVideoResponse"));
                }
                finally
                {
                    var responseMessage = new VideoUploadResponseMessage();

                    if (_cts.IsCancellationRequested)
                    {
                        responseMessage.Message = "Video Upload Canceled!";
                    }
                    else
                    {
                        responseMessage.Message = "Video(s) Uploaded Successfully!";
                    }

                    Device.BeginInvokeOnMainThread(() => MessagingCenter.Send(responseMessage, "UploadVideoResponse"));
                }
            }, _cts.Token);

            return(StartCommandResult.Sticky);
        }
Пример #2
0
        public async Task Start()
        {
            _cts = new CancellationTokenSource();

            _taskId = UIApplication.SharedApplication.BeginBackgroundTask("VideoUploadTask", OnExpiration);

            try
            {
                // Option #1: Using PCL project service with Dependency Injection
                await MediaService.Instance.UploadPendingVideos();
            }
            catch (OperationCanceledException ex)
            {
                var errorMessage = new VideoUploadResponseMessage
                {
                    HasErrors = true,
                    Message   = "ERROR: " + ex.Message
                };

                Device.BeginInvokeOnMainThread(() => MessagingCenter.Send(errorMessage, "UploadVideoResponse"));
            }
            finally
            {
                var responseMessage = new VideoUploadResponseMessage();

                if (_cts.IsCancellationRequested)
                {
                    responseMessage.Message = "Video Upload Canceled!";
                }
                else
                {
                    responseMessage.Message = "Video(s) Uploaded Successfully!";
                }

                Device.BeginInvokeOnMainThread(() => MessagingCenter.Send(responseMessage, "UploadVideoResponse"));
            }

            UIApplication.SharedApplication.EndBackgroundTask(_taskId);
        }