public async Task RunAsync(IBackgroundTaskInstance taskInstance) { deferral = taskInstance.GetDeferral(); Configuration configuration = new Configuration(); DefaultConfigurationLoader.Load(configuration); ApplicationTriggerConfigurationLoader.Load(configuration, taskInstance.TriggerDetails as ApplicationTriggerDetails); ApplicationTriggerDetails triggerDetails = taskInstance.TriggerDetails as ApplicationTriggerDetails; DeviceInformationCollection devices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture); DeviceInformation device = devices.Where(d => d.EnclosureLocation != null).FirstOrDefault(d => d.EnclosureLocation.Panel == Panel.Back); if (device == null) { device = devices.FirstOrDefault(); } captureService = new CaptureService(configuration.Interval, configuration.Delay, device); captureService.ExceptionHandler += OnCaptureException; captureService.TryStartIfNotStopped(); IHttpHandler httpHandler = new AuthenticationHttpHandler(configuration.AuthenticationToken, this); server = new HttpServer(httpHandler); await server.StartAsync(configuration.Port); }
public static void Load(Configuration configuration, ApplicationTriggerDetails triggerDetails) { if (triggerDetails != null) { ProcessValueInt(triggerDetails.Arguments, "Port", port => configuration.Port = port); ProcessValueString(triggerDetails.Arguments, "AuthenticationToken", authToken => configuration.AuthenticationToken = authToken); ProcessValueTimeSpan(triggerDetails.Arguments, "Delay", delay => configuration.Delay = delay); ProcessValueTimeSpan(triggerDetails.Arguments, "Interval", interval => { if (interval > TimeSpan.FromSeconds(10) && interval < TimeSpan.FromMinutes(5)) { configuration.Interval = interval; } }); } }
/// <summary> /// Pretty much identical to showProgressInApp() in MainPage.xaml.cs /// </summary> /// <param name="taskInstance"></param> public async void Run(IBackgroundTaskInstance taskInstance) { boom = taskInstance; _deferral = taskInstance.GetDeferral(); ApplicationTriggerDetails details = (ApplicationTriggerDetails)taskInstance.TriggerDetails; string packagePath = ""; packagePath = (string)details.Arguments["packagePath"]; PackageManager pkgManager = new PackageManager(); Progress <DeploymentProgress> progressCallback = new Progress <DeploymentProgress>(installProgress); notification.SendUpdatableToastWithProgress(0); try { var result = await pkgManager.AddPackageAsync(new Uri(packagePath), null, DeploymentOptions.None).AsTask(progressCallback); checkIfPackageRegistered(result, resultText); } catch (Exception e) { resultText = e.Message; } if (pkgRegistered == true) { notification.showInstallationHasCompleted(); } else { notification.showError(resultText); } _deferral.Complete(); }
/// <summary> /// Pretty much identical to showProgressInApp() in MainPage.xaml.cs /// </summary> /// <param name="taskInstance"></param> public async void Run(IBackgroundTaskInstance taskInstance) { boom = taskInstance; _deferral = taskInstance.GetDeferral(); ApplicationTriggerDetails details = (ApplicationTriggerDetails)taskInstance.TriggerDetails; string packagePath = ""; packagePath = (string)details.Arguments["packagePath"]; PackageManager pkgManager = new PackageManager(); Progress <DeploymentProgress> progressCallback = new Progress <DeploymentProgress>(installProgress); notification.SendUpdatableToastWithProgress(0); if ((int)details.Arguments["installType"] == 1) { List <Uri> dependencies = new List <Uri>(); var dependencyPairs = details.Arguments.Where(p => p.Key.Contains("d")).ToList(); foreach (var dependencyPair in dependencyPairs) { string dependencyAsString = (string)dependencyPair.Value; dependencies.Add(new Uri(dependencyAsString)); } try { var result = await pkgManager.AddPackageAsync(new Uri(packagePath), dependencies, DeploymentOptions.ForceTargetApplicationShutdown).AsTask(progressCallback); checkIfPackageRegistered(result, resultText); } catch (Exception e) { resultText = e.Message; } } else { try { var result = await pkgManager.AddPackageAsync(new Uri(packagePath), null, DeploymentOptions.ForceTargetApplicationShutdown).AsTask(progressCallback); checkIfPackageRegistered(result, resultText); } catch (Exception e) { resultText = e.Message; } } if (pkgRegistered == true) { notification.showInstallationHasCompleted(); } else { notification.showError(resultText); } _deferral.Complete(); }