Пример #1
0
        private void ServiceBusViewUpdate(int i)
        {
            serviceBus.SetServer(i);
            if (!isUpdatingServiceBus)
            {
                Task.Run(async() =>
                {
                    if (serviceBusTokenSource.Token.IsCancellationRequested)
                    {
                        serviceBusTokenSource.Token.ThrowIfCancellationRequested();
                    }
                    else
                    {
                        List <BusQueue> bq = null;
                        while (true)
                        {
                            if (serviceBus.IsRunning == false)
                            {
                                await Task.Delay(TimeSpan.FromSeconds(5));
                            }
                            lock (lockCollectionQ)
                            {
                                //bq = serviceBus.GetGetQueues();
                            }

                            socket.SendLogToUser("bus", bq);

                            var x1 = new ObservableCollection <BusQueue>(bq).OrderByDescending(x => x.Active);


                            var x2 = new ObservableCollection <BusQueue>(bq).OrderByDescending(x => x.DeadLetter);
                            if (bq != null && bq.Count() > 0)
                            {
                                Dispatcher.Invoke(() =>
                                {
                                    ActiveMessageListView.ItemsSource = x1;
                                    ActiveMessageListView.Items.Refresh();
                                    DeadletterView.ItemsSource = x2;
                                    DeadletterView.Items.Refresh();
                                }, System.Windows.Threading.DispatcherPriority.Background);
                            }
                            Task.Delay(TimeSpan.FromSeconds(7)).Wait();
                        }
                    }
                }, serviceBusTokenSource.Token);
            }

            Task.Run(async() =>
            {
                if (serviceBusTokenSource.Token.IsCancellationRequested)
                {
                    serviceBusTokenSource.Token.ThrowIfCancellationRequested();
                }
                else
                {
                    List <BusTopic> bq = null;
                    while (true)
                    {
                        if (serviceBus.IsRunning == false)
                        {
                            await Task.Delay(TimeSpan.FromSeconds(5));
                        }
                        lock (lockCollectionQ)
                        {
                            bq = new List <BusTopic>(serviceBus.GetGetTopics());
                        }

                        socket.SendLogToUser("topics", bq);

                        try
                        {
                            //var x1 = new ObservableCollection<BusTopic>(bq.GroupBy(g => g.Worker)
                            //        .Select(s =>

                            //            new BusTopic(
                            //                s.Key,
                            //                s.Where(f => f.Name == s.Key)
                            //                    .Select(l => l.Name)
                            //                    .FirstOrDefault(),
                            //                s.Sum(ss => ss.Active),
                            //                s.Sum(ss => ss.DeadLetter)
                            //                )
                            //        ))
                            //        .OrderByDescending(order => order.Active);
                            var x2 = new ObservableCollection <BusTopic>(bq)
                                     .OrderByDescending(x => x.Active);

                            if (bq != null && bq.Count() > 0)
                            {
                                Dispatcher.Invoke(() =>
                                {
                                    //TopicsView.ItemsSource = x1;
                                    //TopicsView.Items.Refresh();
                                    TopicSubscriptionsView.ItemsSource = x2;
                                    TopicSubscriptionsView.Items.Refresh();
                                }, System.Windows.Threading.DispatcherPriority.Background);
                            }
                            await Task.Delay(TimeSpan.FromMinutes(1));
                        }catch (Exception e)
                        {
                            MessageBox.Show(e.Message);
                        }
                    }
                }
            }, serviceBusTokenSource.Token);
        }