using DevExpress.Utils.Html; using DevExpress.XtraEditors; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Entity; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Forms; using XdCxRhDW.App.Controllers; using XdCxRhDW.App.EditForms; using XdCxRhDW.App.Model; using XdCxRhDW.Dto; namespace XdCxRhDW.App.UserControl { public partial class CtrlSvrs : DevExpress.XtraEditors.XtraUserControl { List list = new List(); public CtrlSvrs() { InitializeComponent(); gridSvrs.UseDefault(list).UseGroup().UseRowNumber(); gridSvrs.UseEdit(); var linkEdit = new DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit(); this.gridSvrs.RepositoryItems.Add(linkEdit); gridView1.Columns[nameof(ModelSvr.SwaggerAddr)].ColumnEdit = linkEdit; gridView1.Columns[nameof(ModelSvr.SwaggerAddr)].OptionsColumn.AllowEdit = true; } private void CtrlSvrs_Load(object sender, EventArgs e) { this.list.AddRange(ServerContext.Instance.GetAll()); gridView1.RefreshData(); Messenger.Defalut.Sub>("服务集合改变", RefreshSvr); } private void RefreshSvr(List items) { if (!this.IsHandleCreated || this.Disposing || this.IsDisposed) return; try { var listCopy = list.Skip(0).ToList(); foreach (var item in listCopy) { var find = items.Find(p => p.BaseHttpAddr == item.BaseHttpAddr); if (find == null) { list.Remove(item); } } foreach (var item in items) { var find = list.Find(p => p.BaseHttpAddr == item.BaseHttpAddr); if (find == null) { list.Add(new ModelSvr() { SvrType = item.SvrType, SvrID = item.SvrID, BaseHttpAddr = item.BaseHttpAddr, SwaggerAddr = item.SwaggerAddr, ReportTime = DateTime.Now, }); } else { find.BaseHttpAddr = item.BaseHttpAddr; find.SwaggerAddr = item.SwaggerAddr; find.SvrType = item.SvrType; find.SvrID = item.SvrID; find.ReportTime = DateTime.Now; } } this.BeginInvoke(new Action(() => { gridView1.RefreshData(); })); } catch (Exception ex) { Serilog.Log.Error(ex, "处理服务状态上报异常"); } } protected override void Dispose(bool disposing) { Messenger.Defalut.UnSub>("服务集合改变", RefreshSvr); if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } } }