| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | 
							- namespace MinicsConsole;
 
- class HostLifetime(
 
-         HardwareFileLoader hardwareFileLoader,
 
-         ConfigFileLoader configFileLoader,
 
-         AddressFileLoader addressFileLoader,
 
-         HardWareMonitor hardWareMonitor,
 
-         ConfigUpdater configUpdater,
 
-         BasicInfo basicInfo,
 
-         OrmCollections ormCollections,
 
-         DataBaseCleaner dataBaseCleaner,
 
-         UISender uiNotifier,
 
-         RTNotifier rtNotifer,
 
-         PLCNotifier plcNotifier,
 
-         KanbanNotifier kanbanNotifier,
 
-         Mini8DataDispatcher dataDispatcher,
 
-         DailyRoutinHelper dailyRoutinHelper,
 
-         ITlvProvider tlvProvider,
 
-         ILog log) : IHostedService
 
- {
 
-     //Do all Module Initializations here
 
-     async Task IHostedService.StartAsync(CancellationToken cancellationToken)
 
-     {
 
-         log.Initialize("General");
 
-         hardwareFileLoader.Load();
 
-         configFileLoader.Load();
 
-         addressFileLoader.Load();
 
-         addressFileLoader.LoadPLC();
 
-         //Perparing for data receiver
 
-         if (!plcNotifier.StartService())
 
-         {
 
-             log.Fatal($"PLC configFile Not Exist");
 
-             Environment.Exit(0);
 
-         }
 
-         dataDispatcher.TryAddNotifier("PLC", plcNotifier);
 
-         dataDispatcher.TryAddNotifier("UI", uiNotifier);
 
-         //Start RT Server
 
-         if (string.IsNullOrEmpty(basicInfo.RTServerAddress) ||
 
-             !rtNotifer.Initialize(tlvProvider) ||
 
-             !rtNotifer.Open(basicInfo.RTServerAddress, basicInfo.RTServerPort))
 
-         {
 
-             log.Fatal($"Open RT Server {basicInfo.RTServerAddress}:{basicInfo.RTServerPort} Failed");
 
-             Environment.Exit(0);
 
-         }
 
-         dataDispatcher.TryAddNotifier("RT", rtNotifer);
 
-         dataDispatcher.TryAddNotifier("Kanban", kanbanNotifier);
 
-         //Connect to DataBase Server
 
-         ormCollections.MainORM = new SqlSugarCustom();
 
-         if (string.IsNullOrEmpty(basicInfo.DBConnectionString) ||
 
-             !ormCollections.MainORM.Initialize() ||
 
-             !ormCollections.MainORM.Open(basicInfo.DBConnectionString, DbType.PostgreSQL))
 
-         {
 
-             log.Fatal($"Connect DB Failed");
 
-             Environment.Exit(0);
 
-         }
 
-         log.Info($"Start RT Server  {basicInfo.RTServerAddress}:{basicInfo.RTServerPort} success");
 
-         //Connect to Mini8s
 
-         if (!hardWareMonitor.ParallelCreateConnections())
 
-             log.Warning($"Mini8 Addresses error Unable to connect to mini8s");
 
-         //Read Realtime data from mini8 & Read ChannelMode from hareware configruation
 
-         if (configUpdater.ReadConfigFromMini8(out TemperatureConfig? temperatureConfig) && temperatureConfig is not null)
 
-             configUpdater.SetConfigFile(temperatureConfig, false, out _);
 
-         //Start Collecting Mini8s Realtime Data
 
-         hardWareMonitor.ParallelStartDataCollecion();
 
-         dailyRoutinHelper.AddorUpdateRoutinWork("CleanDataBase", dataBaseCleaner.CleanDB);
 
-         dailyRoutinHelper.AddorUpdateRoutinWork("CleanLogFile", ((LogSender)log).CleanLog);
 
-         dailyRoutinHelper.StartService(TimeSpan.FromDays(1));
 
-         await Task.CompletedTask;
 
-     }
 
-     private AutoResetEvent _AutoResetEvent = new(true);
 
-     async Task IHostedService.StopAsync(CancellationToken cancellationToken)
 
-     {
 
-         if (!_AutoResetEvent.WaitOne(0))
 
-             await Task.CompletedTask;
 
-         log.Info("Minics Console has been shutted down by UI request");
 
-         //log.Info("Saving setting files..");
 
-         //hardwareFileLoader.Save();
 
-         //configFileLoader.Save();
 
-         //addressFileLoader.Save();
 
-         //BaseConfigFileLoader.Save(basicInfo);
 
-         log.Info("Closing all mini8 connections..");
 
-         hardWareMonitor.CloseConnections();
 
-         log.Info("Closing RT server connections..");
 
-         rtNotifer?.Dispose();
 
-         log.Info("Closing PLC connections..");
 
-         plcNotifier?.Dispose();
 
-         log.Info("Closing Database connections..");
 
-         ormCollections?.MainORM?.Dispose();
 
-         dailyRoutinHelper?.Dispose();
 
-         log.Info("Finish Stopping..");
 
-         log.Dispose();
 
-         await Task.CompletedTask;
 
-     }
 
- }
 
 
  |