示例#1
0
        static async Task Main(string[] args)
        {
            await Logger.Log("Start program");

            await Logger.Log("Load Configuration");

            IConfigurationFactory configurationFactory = new ConfigurationFactory();
            ConfigurationBuilder  configurationBuilder = new ConfigurationBuilder(configurationFactory);

            var a = configurationBuilder.GetConfiguration().Map(configuration =>
            {
                Task.Run(async() =>
                {
                    await Logger.Log("successfully loaded configuration!");
                    await Logger.Log("Load and start scheduler");
                    ISchedulerFactory schedulerFactory =
                        new CustomSchedulerFactory <SchedulerJob>("job1", "group1", "trigger1", configuration);

                    await schedulerFactory.RunScheduler();

                    await Logger.Log("App is in running state!");
                });
                return(Task.Delay(-1));
            }).ValueOr(() => Task.CompletedTask);

            await Task.WhenAll(a);

            Environment.Exit(1);
        }
示例#2
0
        static async Task Main(string[] args)
        {
            Log.Logger = BuildLoggerConfiguration.Build();

            _logger = Log.Logger.ForContext <Program>();
            _logger.Information("starting app");

            IConfigurationFactory configurationFactory = new ConfigurationFactory();

            var startupObjectOpt = await new ConfigurationBuilder(configurationFactory).GetConfigurationAsync();

            var mainTask = startupObjectOpt.Map(configuration =>
            {
                var sw = Stopwatch.StartNew();
                _logger.Information("Build up the scheduler");
                try
                {
                    Task.Run(async() =>
                    {
                        ISchedulerFactory currentWeatherSchedulerFactory =
                            new CustomSchedulerFactory <CurrentWeatherSchedulerJob>("currentWeatherJob",
                                                                                    "currentWeatherGroup", "currentWeatherTrigger", 10, configuration.RunsEvery,
                                                                                    configuration);
                        ISchedulerFactory airPollutionSchedulerFactory =
                            new CustomSchedulerFactory <AirPollutionSchedulerJob>("airPollutionJob",
                                                                                  "airPollutionGroup",
                                                                                  "airPollutionTrigger", 15, configuration.AirPollutionRunsEvery, configuration);
                        await currentWeatherSchedulerFactory.RunScheduler();
                        await airPollutionSchedulerFactory.RunScheduler();
                        _logger.Information("App is in running state!");
                    });
                    return(Task.Delay(-1));
                }
                finally
                {
                    sw.Stop();
                    _logger.Information("Processed {MethodName} in {ElapsedMs:000} ms", "Main",
                                        sw.ElapsedMilliseconds);
                }
            }).ValueOr(() => Task.CompletedTask);


            await Task.WhenAll(mainTask);

            Environment.Exit(1);
        }