public void Refresh() { UpdateStatusTaskManager.Execute(this, UpdateStatusTaskType.Server, () => { var serverData = ListenServerData.GetServerList(); serverData.Columns.Add(new DataColumn("StatusColor", typeof(string))); foreach (DataRow row in serverData.Rows) { var host = row ["Host"].ToString(); var port = row ["HttpPort"].ToString(); var serverItem = new ListenServerItem(); serverItem.Host = host; serverItem.HttpPort = port; var url = serverItem.HttpUrl; var result = HttpHelper.CheckHttp(url); if (result.Item1) { row ["Status"] = "正常"; row ["StatusColor"] = Common.DEFAULT_TEXT_COLOR; } else { row ["Status"] = "异常"; row ["StatusColor"] = "Red"; } } var dataView = serverData.DefaultView; if (serverData.Rows.Count > 0) { dataView.Sort = "Status desc"; } Dispatcher.Invoke((Action) delegate { listView.DataContext = dataView.ToTable(); }); }); }
public ServerManager(ListenServerItem listenServerItem) { InitializeComponent(); AuthMessageManager.Clear(listenServerItem.HttpUrl); this.listenServerItem = listenServerItem; this.Title = listenServerItem.Name; this.dataSource = new DataSource(listenServerItem); this.uiMySql = new UIMySQL(this, dataSource); this.uiProcess = new UIProcess(this, dataSource); this.uiHttpUrl = new UIHttpUrl(this, dataSource); this.uiUser = new UIUser(this, dataSource); this.uiOverview = new UIOverview(this, dataSource); this.uiHistory = new UIHistory(this, dataSource); ThreadPool.QueueUserWorkItem(delegate { if (CheckServerStatus()) { CheckMailStmpServer(); } }); this.Closed += (o, e) => { UpdateStatusTaskManager.Remove(this, UpdateStatusTaskType.HttpUrl); UpdateStatusTaskManager.Remove(this, UpdateStatusTaskType.MySql); UpdateStatusTaskManager.Remove(this, UpdateStatusTaskType.Process); UpdateStatusTaskManager.Remove(this, UpdateStatusTaskType.Overview); }; }
protected void UpdateStatus(ListView listView, List <entity.EntityBase> data, UpdateStatusTaskType type, GetStatus getStatus) { UpdateStatusTaskManager.Execute(window, type, () => { data = data.Select(item => { var status = getStatus(); var result = status.Where(n => n.ID == item.ID); if (result.Count() > 0) { var first = result.First(); var desc = first.StatusDesc; item.Status = desc; item.StatusColor = first.StatusTextColor; item.Delay = first.Delay; } return(item); }).ToList(); window.Dispatcher.Invoke((Action) delegate { listView.DataContext = data; }); }); }
public UIOverview(ServerManager window, DataSource dataSource) : base(window, dataSource) { UpdateStatusTaskManager.Execute(window, UpdateStatusTaskType.Overview, delegate() { this.FillData(); }); }