using System.Text; using Common; using Microsoft.Extensions.Logging; using MySQLAccess.PGModels; using NLog; using 看板定阅.Models; namespace 看板定阅.Services { public class MyTimer : BackgroundService { //public PostgresContext dbcontext { get; set; } public IServiceProvider pivider { get; set; } public System.Timers.Timer jiankong_timer { get; set; } public MyTimer(IServiceProvider db) { this.pivider = db; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { try { jiankong_timer = new System.Timers.Timer(); jiankong_timer.Interval = 15000; jiankong_timer.Elapsed += Jiankong_timer_Elapsed; ; jiankong_timer.Start(); await Task.CompletedTask; } catch (Exception) { } } public static Logger logger = LogManager.GetCurrentClassLogger(); private void Jiankong_timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e) { try { //var db= pivider.GetRequiredKeyedService(""); //using var db = pivider.GetService(); //PostgresContext db = new PostgresContext(); using var scope = pivider.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); var data = db.TcpHeartbeatData.Where(A => A.DeviceId.Equals(WaiBuJianKong.data.device_id)).OrderByDescending(A => A.CreateTime).FirstOrDefault(); var df = WaiBuJianKong.data; df.device_id = data.DeviceId; df.device_status = data.WorkStatus; df.realtime_value = data.RealTimeValue; df.environment_value = data.EnvValue; df.mcu_temperature = data.McuT; df.sensor_temperature = data.Temperature; df.sensor_humidity = data.Humidity; df.adc_raw_value = data.AdcOriginalValuue; string NewStringData = WaiBuJianKong.Data; NewStringData = NewStringData.Replace("{1}", df.device_id) .Replace("{2}", df.device_status) .Replace("{3}", df.realtime_value) .Replace("{4}", df.environment_value) .Replace("{5}", df.mcu_temperature) .Replace("{6}", df.sensor_temperature) .Replace("{7}", df.sensor_humidity) .Replace("{8}", df.adc_raw_value) .Replace("{9}", "0") .Replace("{10}", "0") .Replace("{11}", "0") .Replace("{12}", "0") .Replace("{13}", "0") .Replace("{14}", "0") .Replace("{15}", "0"); WanBuJianKong(NewStringData, "1.txt"); File.WriteAllText("2.txt", NewStringData, Encoding.UTF8); Console.WriteLine("here"); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); logger.Error(ex.Message); logger.Error(ex.StackTrace); } } public static void WanBuJianKong(string Data, string SourceTxt) { System.IO.File.WriteAllText(SourceTxt, Data, Encoding.UTF8); // 如果目标文件存在,先删除 if (System.IO.File.Exists(WaiBuJianKong.WaiBuJianKongTargetFileName)) { System.IO.File.Delete(WaiBuJianKong.WaiBuJianKongTargetFileName); } // 重命名/移动文件 System.IO.File.Move(SourceTxt, WaiBuJianKong.WaiBuJianKongTargetFileName); } } }