Ejemplo n.º 1
0
        public async Task RefreshALl()
        {
            try
            {
                logger.Debug(nameof(RefreshALl));
                var serverQueues = await hub.ListQueues();


                foreach (var q in serverQueues.OrderBy(q => q.Id))
                {
                    if (queuesById.ContainsKey(q.Id))
                    {
                        MergeChanges(queuesById[q.Id], q);
                    }
                    else
                    {
                        AddQueue(q);
                    }
                }

                foreach (var q in queues.ToList())
                {
                    if (!serverQueues.Any(sq => sq.Id == q.Id))
                    {
                        queues.Remove(q);
                        queuesById.Remove(q.Id);

                        queueList.Dispatcher.Invoke(() =>
                        {
                            var window =
                                queueList.QueuesPanel.Children.OfType <QueueNotification>()
                                .FirstOrDefault(w => w.Queue.Id == q.Id);
                            if (window != null)
                            {
                                queueList.QueuesPanel.Children.Remove(window);
                            }
                        });
                    }
                }
            }
            catch (Exception e)
            {
                logger.Error(e, "RefreshAll Failed");
            }
        }