using Cksoft.Unity; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Quartz; using Quartz.Impl; using System; namespace BIOutputPush { class Program { static void Main(string[] args) { var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); var configuration = builder.Build(); IServiceCollection services = new ServiceCollection(); services.AddOptions(); NLog.ILogger logger = NLog.LogManager.LoadConfiguration("NLog.config").GetCurrentClassLogger(); logger.Fatal("服务启动成功"); //注入 //services.Configure(opts => //{ // configuration.GetSection("AppConfig").Bind(opts); //}); //services.AddTransient<>(); services.AddTransient(t => { return configuration; }); //构建容器 IServiceProvider serviceProvider = services.BuildServiceProvider(); // var config = serviceProvider.GetRequiredService(); var config = serviceProvider.GetRequiredService(); int interval = Convert.ToInt32(configuration["Interval"]); var connStr = configuration.GetConnectionString("eap"); AppConfigurtaionServices.Configuration = configuration; //创建一个作业调度池 ISchedulerFactory schedf = new StdSchedulerFactory(); IScheduler sched = schedf.GetScheduler().Result; //开始运行 sched.Start(); //创建出一个具体的作业 IJobDetail job = JobBuilder.Create().Build(); //配置一个触发器 //创建出一个具体的作业 var cron = $"0 */10 * * * ?"; //创建触发器 ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartNow() .WithCronSchedule(cron) .Build(); //加入作业调度池中 sched.ScheduleJob(job, trigger).Wait(); logger.Fatal("服务启动完成"); while (true) { logger.Fatal("服务正在运行"); System.Threading.Thread.Sleep(1000 * 3600); } //while (true) //{ // if (DateTime.Now.Minute % 10 == 0) // { // Task.Run(() => // { // using (IDatabase db = DbFactory.Base(connStr, DatabaseType.MySql)) // { // try // { // string errorinfo = string.Empty; // var dal = new BICollectDal(db); // db.BeginTrans(); // var res = dal.CollectOutput(ref errorinfo); // if (res > 0) // { // db.Commit(); // logger.Fatal("推送BI产量数据成功"); // } // else // { // db.Rollback(); // logger.Error($"推送BI产量数据失败,原因为:{errorinfo}"); // } // } // catch (Exception ex) // { // if (db != null) // db.Rollback(); // logger.Error($"推送BI产量数据失败,原因为:{ex.ToString()}"); // } // } // }); // } // Thread.Sleep(30 * 1000); //} } } }