using AlarmMonitorWorkerService.Quartz; using AlarmMonitorWorkerService.Quartz.Jobs; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Quartz; using Quartz.Impl; using Quartz.Spi; using Repository.BaseRepository.Implement; using Repository.BaseRepository.Interface; using Repository.FrontendRepository.Implement; using Repository.FrontendRepository.Interface; using Repository.Helper; using Repository.Models; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace AlarmMonitorWorkerService { public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices((hostContext, services) => { IConfiguration configuration = hostContext.Configuration; #region DBHelper 注入 services.Configure(configuration.GetSection("DBConfig")); services.AddTransient(); #endregion DBHelper 注入 #region Repository 注入 //services.AddTransient(); //services.AddTransient(); services.AddTransient(); services.AddTransient(); #endregion Repository 注入 //添加Quartz服務 services.AddTransient(); services.AddTransient(); services.AddHostedService(); #region 監控緊急應變畫面(設定3秒執行一次) services.AddSingleton(); services.AddSingleton( new JobSchedule(jobType: typeof(AlarmMonitorJob), cronExpression: configuration.GetValue("BackgroundServiceCron:AlarmMonitorJob")) ); #endregion }).ConfigureLogging((hostContext, logFactory) => { IConfiguration configuration = hostContext.Configuration; //logFactory.AddFile("Logs/log-{Date}.txt"); logFactory.AddFile(configuration.GetValue("LoggerPath") + "/log-{Date}.txt"); }); } }