using New_College.Common.Helper; using Microsoft.Extensions.Hosting; using System; using System.Threading; using System.Threading.Tasks; using New_College.IServices; namespace New_College.Tasks { public class UserBaseSettingJobTimedService : IHostedService, IDisposable { private Timer _timer; private ID_UserSettingBaseServices _UserSettingBaseServices; // 这里可以注入 public UserBaseSettingJobTimedService(ID_UserSettingBaseServices d_UserSettingBaseServices) { _UserSettingBaseServices = d_UserSettingBaseServices; } public Task StartAsync(CancellationToken cancellationToken) { Console.WriteLine("Job userbaseupdate is starting."); // 获取当前时间 //_timer = new Timer(DoWork, null, TimeSpan.Zero, // TimeSpan.FromSeconds(1));//一 DateTime currentTime = DateTime.Now; // 计算距离晚上12点的时间间隔 TimeSpan timeUntilMidnight = TimeSpan.FromDays(1) - currentTime.TimeOfDay; _timer = new Timer(DoWork, null, timeUntilMidnight, TimeSpan.FromDays(1));//小时 return Task.CompletedTask; } private void DoWork(object state) { _UserSettingBaseServices.UpdateBaseInit();//晚上12点同步 ConsoleHelper.WriteWarningLine($"userbaseJobstart : {DateTime.Now}"); } public Task StopAsync(CancellationToken cancellationToken) { Console.WriteLine("userbaseJob is stopping."); _timer?.Change(Timeout.Infinite, 0); return Task.CompletedTask; } public void Dispose() { _timer?.Dispose(); } } }