示例#1
0
        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);
        }
示例#2
0
 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;
             }
         });
     }
 }
示例#3
0
        /// <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();
        }