using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System; using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; using WCS.Core; namespace WCS.Service { public class Program { /// /// 程序入口 /// /// public static void Main(string[] args) { using var mt = new Mutex(true, "WCS"); if (mt.WaitOne()) { Configs.AddSystemMode(SystemMode.虚拟PLC); CreateHostBuilder(args).Build().Run(); mt.ReleaseMutex(); } else { Console.WriteLine("请勿重复运行"); //InfoLog.INFO_INIT("请勿重复运行"); Task.Delay(2000).Wait(); } } /// /// 创建一个主机构建器 /// /// /// public static IHostBuilder CreateHostBuilder(string[] args) { //是否是win平台 var isWin = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); Console.WriteLine($"win:{isWin}"); if (isWin) { return Host.CreateDefaultBuilder(args) .UseWindowsService()//win .ConfigureWebHostDefaults(web => //网络访问配置 { web.UseUrls("http://*:8080"); //设备访问端口 web.UseStartup(); //调用启动服务 }) .ConfigureServices((_, services) => { //services.AddDbContext(); services.AddHostedService(); services.AddHttpClient(); }); } return Host.CreateDefaultBuilder(args) .UseSystemd()//linux .ConfigureServices((_, services) => { services.AddHostedService(); }); } } }