Program.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using Microsoft.AspNetCore.Hosting;
  2. using System.Runtime.InteropServices;
  3. using WCS.Core;
  4. namespace WCS.Service
  5. {
  6. public class Program
  7. {
  8. /// <summary>
  9. /// 程序入口
  10. /// </summary>
  11. /// <param name="args"></param>
  12. public static void Main(string[] args)
  13. {
  14. using var mt = new Mutex(true, "WCS");
  15. if (mt.WaitOne())
  16. {
  17. Configs.AddSystemMode(SystemMode.虚拟PLC);
  18. CreateHostBuilder(args).Build().Run(); mt.ReleaseMutex();
  19. }
  20. else
  21. {
  22. Console.WriteLine("请勿重复运行");
  23. //InfoLog.INFO_INIT("请勿重复运行");
  24. Task.Delay(2000).Wait();
  25. }
  26. }
  27. /// <summary>
  28. /// 创建一个主机构建器
  29. /// </summary>
  30. /// <param name="args"></param>
  31. /// <returns></returns>
  32. public static IHostBuilder CreateHostBuilder(string[] args)
  33. {
  34. //是否是win平台
  35. var isWin = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
  36. Console.WriteLine($"win:{isWin}");
  37. if (isWin)
  38. {
  39. return Host.CreateDefaultBuilder(args)
  40. .UseWindowsService()//win
  41. .ConfigureWebHostDefaults(web => //网络访问配置
  42. {
  43. web.UseUrls("http://*:8080"); //设备访问端口
  44. web.UseStartup<Startup>(); //调用启动服务
  45. })
  46. .ConfigureServices((_, services) =>
  47. {
  48. //services.AddDbContext<WCSDB>();
  49. services.AddHostedService<Worker>();
  50. services.AddHttpClient();
  51. });
  52. }
  53. return Host.CreateDefaultBuilder(args)
  54. .UseSystemd()//linux
  55. .ConfigureServices((_, services) =>
  56. {
  57. services.AddHostedService<Worker>();
  58. });
  59. }
  60. }
  61. }