public Thread longThread; //Поток, постоянно обновляющий данные о картах и триггерах #endregion /// <summary> /// Событие для уведомления основного потока приложения об изменениях в потоке получения информации от сервера /// </summary> /// <param name="message">Структура указывающее тип события и коментарий к нему</param> public void Update(UpdateInfoMessage msg) { if (onUpdate != null) { onUpdate(msg); } }
/// <summary> /// Событие для уведомления основного потока приложения об изменениях в потоке получения информации от сервера /// </summary> /// <param name="message">Структура указывающее тип события и коментарий к нему</param> public void Update(UpdateInfoMessage msg) { if (onUpdate!=null) { onUpdate(msg); } }
private void update_info(UpdateInfoMessage info) { switch (info.status) { case "OK": this.Dispatcher.Invoke(DispatcherPriority.Normal, new simplefunc(() => { Status.Content = "Подготовка к отображению карты"; LoadMaps(); this.Cursor = Cursors.Arrow; Status.Content = "online"; })); break; case "START": this.Dispatcher.Invoke(DispatcherPriority.Normal, new simplefunc(() => { Status.Content = "Подключение к серверу"; })); break; case "LOGIN": this.Dispatcher.Invoke(DispatcherPriority.Normal, new simplefunc(() => { Status.Content = "Авторизация на сервере"; })); break; case "HOSTS": this.Dispatcher.Invoke(DispatcherPriority.Normal, new simplefunc(() => { Status.Content = "Получение списка узлов сети..."; })); break; case "TRIGGERS": this.Dispatcher.Invoke(DispatcherPriority.Normal, new simplefunc(() => { Status.Content = "Получение списка триггеров"; trHosts.ItemsSource = zApi.hostgroups; })); break; case "MAPS": this.Dispatcher.Invoke(DispatcherPriority.Normal, new simplefunc(() => { Status.Content = "Инициализация карты сети"; //listBox1.ItemsSource = zApi.triggers.collection; //foreach (Zabbix.Trigger tr in zApi.triggers) //{ // vTriggers.Items.Add(tr); //} vTriggers.ItemsSource = zApi.triggers; })); break; case "DEBUG": this.Dispatcher.Invoke(DispatcherPriority.Normal, new simplefunc(() => { Status.Content = "Сохранение отладочной информации"; })); break; case "REFRESH": this.Dispatcher.Invoke(DispatcherPriority.Normal, new simplefunc(() => { Status.Content = "refresh#" + info.message; //this.Title = zApi.triggers.result[0].value; string actMap = ActiveMap.name; LoadMaps(); foreach (TreeViewItem item in trMaps.Items) { if (item.Header.ToString() == actMap) { ActiveMap = (Map)item.Tag; item.IsSelected = true; } } ShowMap(ActiveMap); })); break; case "REFRESH_ERROR": this.Dispatcher.Invoke(DispatcherPriority.Normal, new simplefunc(() => { errors.Content = info.message + " errors"; Status.Content = "При получении информации произошла ошибка"; })); break; case "INFO": this.Dispatcher.Invoke(DispatcherPriority.Normal, new simplefunc(() => { Index.Content = info.message; ; })); break; default: this.Dispatcher.Invoke(DispatcherPriority.Normal, new simplefunc(() => { Index.Content = info.status; errors.Content = info.message; })); break; } this.Dispatcher.Invoke(DispatcherPriority.Normal, new simplefunc(() => { //txtLog.Text += "[" + DateTime.Now.ToString() + "] "+info.sender.ToString()+"\n\t" + info.status + ": " + info.message + "\n\n"; vLog.Items.Insert(0,new { time = DateTime.Now.ToString(), sender = info.sender.ToString(), status = info.status, message = info.message }); })); //if (message == "OK") //{ // this.Dispatcher.Invoke(DispatcherPriority.Normal, new simplefunc(() => // { // LoadMaps(); // this.Cursor = Cursors.Arrow; // trHosts.ItemsSource = zApi.hostgroups.collection; // listBox1.ItemsSource = zApi.triggers.collection; // })); //} //else //{ //} }
private void updateInfo(UpdateInfoMessage info) { if (!this.IsDisposed) { switch (info.status) { case "OK": this.Invoke(new simplefunc(() => { tssMessage.Text = info.message; this.Cursor = Cursors.Arrow; })); break; case "DEBUG": this.Invoke(new simplefunc(() => { Debug(info.message); })); break; case "TRIGGERS": this.Invoke(new simplefunc(() => { long ticks = long.Parse(info.message); double ms = ticks / 10000; Debug("Triggers fetched in: " + ms.ToString() + "ms"); updateAlerts(); })); break; case "HOSTS": this.Invoke(new simplefunc(() => { long ticks = long.Parse(info.message); double ms = ticks / 10000; Debug("Hosts fetched in: " + ms.ToString() + "ms"); })); break; case "REFRESH": break; default: this.Invoke(new simplefunc(() => { tssMessage.Text = info.message; Debug(info.message); })); break; } } }