示例#1
0
        private async void DoWork()
        {
            try
            {
                Tenants = Task.Run(async() => await ExedraLibCoreHandler.GetTenantsAsync(EnvironmentT).ConfigureAwait(true)).Result;

                LoadedProjects = true;

                foreach (var tenant in Tenants.Tenants)
                {
                    NDevices += tenant.NDevices;
                }

                NTenants = Tenants.Tenants.Count;

                await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
                {
                    TB_NTenants.Text = string.Format(CultureInfo.InvariantCulture, "{0:### ### ###}", NTenants).Trim();
                    TB_NDevices.Text = string.Format(CultureInfo.InvariantCulture, "{0:### ### ###}", NDevices).Trim();

                    UIElementsHandler.DrawScoreElements(GRD_NTenants, 5, 5, NTenants / NGroupedTenants, DefaultScoreBoxWidth, DefaultScoreBoxHeight);
                    UIElementsHandler.DrawScoreElements(GRD_NDevices, 5, 5, NDevices / NGroupedDevices, DefaultScoreBoxWidth, DefaultScoreBoxHeight);

                    CTRL_Animation_Tenants.Stop();
                    CTRL_Animation_Devices.Stop();
                });
            }
            catch (Exception e)
            {
                Debug.WriteLine($"UC_Environment_Item::DoWork()::{e.Message}");
            }
        }
示例#2
0
 private void GetTwinsAsync()
 {
     try
     {
         Twins = Task.Run(async() => await ExedraLibCoreHandler.GetTwinsAsync(EnvironmentT, Project.Name).ConfigureAwait(false)).Result.Twins;
         bool a = Task.Run(async() => await DrawPushpins(Twins.ToList()).ConfigureAwait(true)).Result;
         Task.Run(async() => await Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { BindDataControls(); }));
     }
     catch (ArgumentException ex)
     {
         Debug.WriteLine($"GetTwinsAsync - > {ex.Message}");
     }
 }
示例#3
0
        private async void Scheduler_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            if (!IsTwinsRefreshAllowed)
            {
                await Task.Run(() => Thread.Sleep(1000)).ConfigureAwait(true);
            }

            IsTwinsRefreshAllowed = false;

            List <Twin> newTwins = Task.Run(async() => await ExedraLibCoreHandler.GetTwinsAsync(EnvironmentT, Project.Name).ConfigureAwait(false)).Result.Twins;

            var result = newTwins.Where(n => Twins.All(o => o.DeviceID != n.DeviceID)).ToList();

            Debug.WriteLine($"Scheduler_Elapsed -> REFRESHING TWINS -> O: {Twins.Count} -> {result.Count}");

            if (result.Count > 0)
            {
                await Task.Run(() => CleanDevicesFromRunbooks()).ConfigureAwait(false);

                await Task.Run(() => AddTwinsAsync(result.ToList())).ConfigureAwait(false);
            }

            IsTwinsRefreshAllowed = true;
        }
示例#4
0
        private async void DoWork()
        {
            int index = 1;

            KeyValuePair <bool, string> result = new KeyValuePair <bool, string>();

            double stopAt = Math.Floor(Item.Devices.Count / Item.NRuns);

            foreach (var device in Item.Devices)
            {
                if (Status.Equals(RunBookItem.Status.STP))
                {
                    Status = RunBookItem.Status.STP;
                    SetStatusControlsStyle();
                    return;
                }

                Stopwatch timer = new Stopwatch();

                timer.Start();

                while (Status.Equals(RunBookItem.Status.PAU))
                {
                    await Task.Run(() => Thread.Sleep(1000)).ConfigureAwait(false);

                    Debug.WriteLine("PAUSED...");
                }

                if (index % stopAt == 0)
                {
                    Status = RunBookItem.Status.WAI;
                    SetStatusControlsStyle();

                    await Task.Run(() => Thread.Sleep((int)Item.NSeconds * 1000)).ConfigureAwait(false);

                    Status = RunBookItem.Status.RUN;
                    SetStatusControlsStyle();
                }

                switch (Item.D2CMessagesKind)
                {
                case D2CMessagesConfig.Kind.REG:
                    result = ExedraLibCoreHandler.RegisterDevice(device.DeviceName, new BasicGeoposition()
                    {
                        Latitude = device.DevicePosition.Latitude, Longitude = device.DevicePosition.Longitude
                    }, Item.Environment);
                    break;

                case D2CMessagesConfig.Kind.TEL:
                    result = ExedraLibCoreHandler.SendDimmingProfile(device.DeviceID, DateTime.Now, 100, 0, 0, 0, 0, Item.Environment);
                    break;

                case D2CMessagesConfig.Kind.ALR:
                    result = ExedraLibCoreHandler.SendAlarm(device.DeviceID, DateTime.Now, 0, Item.Environment);
                    break;

                case D2CMessagesConfig.Kind.BTEL:
                    result = ExedraLibCoreHandler.SendDimmingProfile(device.DeviceID, DateTime.Now, 100, 0, 0, 0, 0, Item.Environment);
                    break;

                case D2CMessagesConfig.Kind.BALR:
                    result = ExedraLibCoreHandler.SendAlarm(device.DeviceID, DateTime.Now, 0, Item.Environment);
                    break;

                case D2CMessagesConfig.Kind.BREG:
                    result = ExedraLibCoreHandler.RegisterDevice(device.DeviceName, new BasicGeoposition()
                    {
                        Latitude = device.DevicePosition.Latitude, Longitude = device.DevicePosition.Longitude
                    }, Item.Environment);
                    break;

                default:
                    Debug.WriteLine($"DoWork() -> {Item.D2CMessagesKind}");
                    break;
                }

                if (!result.Key)
                {
                    await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.High,
                                                                                                                () =>
                    {
                        Failed++;
                        TB_N_Failed.Text = string.Format(CultureInfo.InvariantCulture, "{0:### ### ###.#}", Failed).Trim();
                    });
                }
                else
                {
                    await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.High,
                                                                                                                () =>
                    {
                        Succeed++;
                        TB_N_Succeed.Text = string.Format(CultureInfo.InvariantCulture, "{0:### ### ###.#}", Succeed).Trim();
                    });

                    Debug.WriteLine(result.Value);
                }

                timer.Stop();

                await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.High,
                                                                                                            () =>
                {
                    ElapsedTime        += timer.ElapsedMilliseconds;
                    AverageTime         = ElapsedTime / index;
                    DeliveredPercentage = Math.Round((double)index / Item.NMessages * 100, 0);
                    double elapsedTime  = Math.Round((double)ElapsedTime / 1000, 2);

                    TB_N_Delivered.Text = string.Format(CultureInfo.InvariantCulture, "{0:###}", DeliveredPercentage);
                    TB_N_AVG.Text       = TextHandler.GetTimeFormattedFromMilseconds(AverageTime);
                    TB_N_Elapsed.Text   = TextHandler.GetTimeFormattedFromMilseconds(ElapsedTime);
                });

                index++;
            }

            Status = RunBookItem.Status.FIN;
            SetStatusControlsStyle();

            await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.High,
                                                                                                        () =>
            {
                SB_DoWork_Done.Begin();
            });
        }