123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- 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<ModelSvrs> list = new List<ModelSvrs>();
- 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(ModelSvrs.SwaggerAddr)].ColumnEdit = linkEdit;
- gridView1.Columns[nameof(ModelSvrs.SwaggerAddr)].OptionsColumn.AllowEdit = true;
- TaskSvr.EventTaskSvr += TaskSvr_EventTaskSvr;
- }
- private ItemSvrEventArgs TaskSvr_EventTaskSvr()
- {
- ItemSvrEventArgs itemSvr = new ItemSvrEventArgs();
- itemSvr.code = -1;
- itemSvr.msg = "没有服务";
- if (list.Count == 0)
- {
- return itemSvr;
- }
- itemSvr.code = 1;
- itemSvr.msg = string.Empty;
- itemSvr.modelSvrs = list.OrderByDescending(s => s.ReportTime).First();
- return itemSvr;
- }
- private async void CtrlSat_Load(object sender, EventArgs e)
- {
- Messenger.Defalut.Sub<SvrStateReportDto>("服务状态改变", dto =>
- {
- try
- {
- if (dto.ReportType == 0)
- {
- var find = list.Find(p => p.BaseHttpAddr == dto.BaseHttpAddr);
- if (find == null)
- {
- list.Add(new ModelSvrs()
- {
- SvrType = dto.SvrType,
- SvrID = dto.SvrID,
- BaseHttpAddr = dto.BaseHttpAddr,
- SwaggerAddr = dto.SwaggerAddr,
- ReportTime = DateTime.Now,
- });
- }
- else
- {
- find.BaseHttpAddr = dto.BaseHttpAddr;
- find.SwaggerAddr = dto.SwaggerAddr;
- find.SvrType = dto.SvrType;
- find.SvrID = dto.SvrID;
- find.ReportTime = DateTime.Now;
- }
- }
- else
- {
- var find = list.Find(p => p.BaseHttpAddr == dto.BaseHttpAddr);
- if (find == null) return;
- list.Remove(find);
- }
- this.BeginInvoke(new Action(() =>
- {
- gridView1.RefreshData();
- }));
- }
- catch (Exception ex)
- {
- Serilog.Log.Error(ex, "处理服务状态上报异常");
- }
- });
- while (true)
- {
- try
- {
- List<string> tmp = new List<string>();
- list.ForEach(t =>
- {
- if ((DateTime.Now - t.ReportTime).TotalSeconds > 20)
- {
- tmp.Add(t.BaseHttpAddr);
- }
- });
- var count = list.RemoveAll(p => tmp.Contains(p.BaseHttpAddr));
- if (count > 0)
- {
- gridView1.RefreshData();
- }
- }
- catch (Exception ex)
- {
- Serilog.Log.Error(ex, "Error");
- }
- await Task.Delay(10000);
- }
- }
- }
- }
|