using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using Common.Utils; using Server.Utils; using SqlSugar; namespace Server.Services.DataMigration { /// /// 数据迁移进度监控服务 /// public class DataMigrationProgressService { private DataMigrationProgressService() { } private static DataMigrationProgressService _migrationService; private static object lockobj = new object(); /// /// 单例的属性 /// public static DataMigrationProgressService Instance { get { if (_migrationService == null) { lock (lockobj) { if (_migrationService == null) { _migrationService = new DataMigrationProgressService(); } } } return _migrationService; } } /// /// 迁移进度 /// private MigrationProgressState State { get; set; } /// /// 开始记录 /// public void Start() { State = new MigrationProgressState(); this.State.StartDateTime = DateTime.Now; this.State.State = 1; } /// /// 停止 /// public void Stop() { this.State.EndDateTime=DateTime.Now; this.State.ElapsedTime = (this.State.EndDateTime - this.State.StartDateTime).TotalMinutes; this.State.State = 2; } /// /// 获取当前迁移进度 /// /// public MigrationProgressState GetState() { return this.State; } } /// /// 迁移状态 /// public class MigrationProgressState { /// /// 开始时间 /// public DateTime StartDateTime { get; set; } /// /// 结束时间 /// public DateTime EndDateTime { get; set; } /// /// 总耗时(分钟) /// public double ElapsedTime { get; set; } /// /// 处理状态 0未开始 1处理中 2完成 /// public int State { get; set; } /// /// 日志 /// public List Logs { get; set; } = new List(); /// /// 添加日志 /// /// public void AddLog(string text) { if (Logs.Count > 10) { Logs.RemoveAt(0); } Logs.Add(text); } } }