Program.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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.Service.Log;
  9. namespace WCS.Service
  10. {
  11. public class Program
  12. {
  13. public static void Main(string[] args)
  14. {
  15. bool create = false;
  16. using (Mutex mt = new Mutex(true, "WCS", out create))
  17. {
  18. if (create)
  19. {
  20. CreateHostBuilder(args).Build().Run();
  21. }
  22. else
  23. {
  24. Console.WriteLine("请勿重复运行");
  25. InfoLog.INFO_INIT("请勿重复运行");
  26. Task.Delay(2000).Wait();
  27. }
  28. }
  29. }
  30. public static IHostBuilder CreateHostBuilder(string[] args)
  31. {
  32. //是否是win平台
  33. bool isWin = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
  34. Console.WriteLine($"win:{isWin}");
  35. if (isWin)
  36. {
  37. return Host.CreateDefaultBuilder(args)
  38. .UseWindowsService()//win
  39. .ConfigureWebHostDefaults(web =>
  40. {
  41. web.UseUrls("http://*:8080");
  42. web.UseStartup<Startup>();
  43. })
  44. .ConfigureServices((hostContext, services) =>
  45. {
  46. services.AddDbContext<WCSDB>();
  47. services.AddHostedService<Worker>();
  48. });
  49. }
  50. return Host.CreateDefaultBuilder(args)
  51. .UseSystemd()//linux
  52. .ConfigureServices((hostContext, services) =>
  53. {
  54. services.AddHostedService<Worker>();
  55. });
  56. }
  57. }
  58. }