Ver código fonte

整理服务的启动流程

林豪 左 3 anos atrás
pai
commit
807ad047ae

+ 11 - 14
Projects/永冠OPP/WCS.Service/Program.cs

@@ -17,19 +17,16 @@ namespace WCS.Service
         /// <param name="args"></param>
         public static void Main(string[] args)
         {
-            bool create = false;
-            using (Mutex mt = new Mutex(true, "WCS", out create)) //互斥锁
+            using var mt = new Mutex(true, "WCS", out var create);
+            if (create)
             {
-                if (create)
-                {
-                    CreateHostBuilder(args).Build().Run();
-                }
-                else
-                {
-                    Console.WriteLine("请勿重复运行");
-                    InfoLog.INFO_INIT("请勿重复运行");
-                    Task.Delay(2000).Wait();
-                }
+                CreateHostBuilder(args).Build().Run();
+            }
+            else
+            {
+                Console.WriteLine("请勿重复运行");
+                InfoLog.INFO_INIT("请勿重复运行");
+                Task.Delay(2000).Wait();
             }
         }
 
@@ -41,7 +38,7 @@ namespace WCS.Service
         public static IHostBuilder CreateHostBuilder(string[] args)
         {
             //是否是win平台
-            bool isWin = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
+            var isWin = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
             Console.WriteLine($"win:{isWin}");
             if (isWin)
             {
@@ -60,7 +57,7 @@ namespace WCS.Service
             }
             return Host.CreateDefaultBuilder(args)
                 .UseSystemd()//linux
-                .ConfigureServices((hostContext, services) =>
+                .ConfigureServices((_, services) =>
                 {
                     services.AddHostedService<Worker>();
                 });

+ 2 - 7
Projects/永冠OPP/WCS.Service/WCSDB.cs

@@ -13,10 +13,6 @@ namespace WCS.Service
 {
     public class WCSDB : DbContext
     {
-        public WCSDB()
-        {
-        }
-
         protected override void OnModelCreating(ModelBuilder modelBuilder)
         {
             var fks = modelBuilder.Model.GetEntityTypes().SelectMany(v => v.GetForeignKeys()).Where(v => v.DeleteBehavior == DeleteBehavior.Cascade).ToArray();
@@ -41,10 +37,9 @@ namespace WCS.Service
         public override int SaveChanges()
         {
             var entities = from e in ChangeTracker.Entries()
-                           where e.State == EntityState.Added
-                               || e.State == EntityState.Modified
+                           where e.State is EntityState.Added or EntityState.Modified
                            select e.Entity;
-            List<ValidationResult> list = new List<ValidationResult>();
+            var list = new List<ValidationResult>();
             foreach (var entity in entities)
             {
                 var validationContext = new ValidationContext(entity);

+ 15 - 22
Projects/永冠OPP/WCS.Service/Worker.cs

@@ -30,8 +30,14 @@ namespace WCS.Service
         {
             if (stoppingToken.IsCancellationRequested)
                 return;
-            var logconfig = JsonConvert.DeserializeObject<LogConfig>(File.ReadAllText("config.json", Encoding.Default));
-            Logs.LogHelper.SetConfigInfo(logconfig);
+
+            #region 启用日志
+
+            var logConfig = JsonConvert.DeserializeObject<LogConfig>(await File.ReadAllTextAsync("config.json", Encoding.Default, stoppingToken));
+            Logs.LogHelper.SetConfigInfo(logConfig);
+
+            #endregion 启用日志
+
             _logger.LogInformation("WCS开始启动");
             InfoLog.INFO_INIT("WCS开始启动");
             Configs.DebugRedisUrl = "127.0.0.1";
@@ -47,6 +53,7 @@ namespace WCS.Service
                 WMS.UploadDevInfo();
                 ProtocolProxy.Do();
             };
+            //异常上抛
             Configs.UploadException = (d, s) =>
             {
                 if (s == "接口调用中")
@@ -59,20 +66,7 @@ namespace WCS.Service
                 WMS.TaskException(d, s);
             };
 
-            LogicHandler.DbLog = (msg, device, type) => Helpers.LogHelper.AddWCS_EXCEPTION(msg, device, type);
-
-            //Configs.DoCmds = act =>
-            //{
-            //    DB.Do(db =>
-            //    {
-            //        var cmds = db.Default.Set<WCS_CMD>().Where(v => v.ENABLED).ToArray();
-            //        Parallel.ForEach(cmds, cmd =>
-            //        {
-            //            act(cmd);
-            //            cmd.ENABLED = false;
-            //        });
-            //    });
-            //};
+            LogicHandler.DbLog = Helpers.LogHelper.AddWCS_EXCEPTION;
 
             PLCAccessor.Creater = new PLCAccessors.PLCAccessorsCreater();
             try
@@ -80,14 +74,12 @@ namespace WCS.Service
                 DB.Do(db =>
                 {
                     var items = db.Default.Set<WCS_DEVICEPROTOCOL>()
-                   //.Where(v => v.ENABLED && v.DEVICE.ENABLED && v.DB.ENABLED && v.DB.PLC.ENABLED)
                    .Include(v => v.DEVICE.ROUTES)
                    .Include(v => v.DEVICE.PATHS)
                    .Include(v => v.DB.PLC).ToArray();
                     items.Select(v => v.Data()).ToArray();
                     LogicHandler.AllObjects.AddRange(items);
 
-                    //var devices = items.GroupBy(v => v.DEVICE).Select(v => v.Key).ToArray();
                     var devices = db.Default.Set<WCS_DEVICE>().Include(v => v.ROUTES).Include(v => v.PATHS).Include(v => v.DEVICEGROUP).ToArray();
                     LogicHandler.AllObjects.AddRange(devices);
                 });
@@ -123,6 +115,8 @@ namespace WCS.Service
 
                 #endregion 设备扩展数据配置
 
+                #region 启用所有的逻辑处理器
+
                 var managerTypes = Assembly.GetExecutingAssembly().GetTypes().Where(v => v.IsSubclassOf(typeof(LogicHandler)) && !v.IsGenericType && !v.IsAbstract).ToArray();
                 foreach (var type in managerTypes)
                 {
@@ -131,7 +125,9 @@ namespace WCS.Service
                 }
 
                 LogicHandler.StartAll();
-                //Uploader.Start();
+
+                #endregion 启用所有的逻辑处理器
+
                 _logger.LogInformation("WCS启动成功");
                 InfoLog.INFO_INIT("WCS启动成功");
             }
@@ -142,14 +138,11 @@ namespace WCS.Service
             }
         }
 
-        private bool Stoped = false;
-
         public override Task StopAsync(CancellationToken cancellationToken)
         {
             _logger.LogError("WCS关闭");
             InfoLog.INFO_INIT("WCS关闭");
             LogicHandler.StopAll();
-            //Uploader.Stop();
             return base.StopAsync(cancellationToken);
         }
     }