Program.cs 2.2 KB

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