C#Quartz计划方法ASYNC



我有一个async方法,并计划每10分钟运行一次。但是,它只运行第一次。

application_start

protected void Application_Start()
{
    ...
    JobScheduler.Start().GetAwaiter().GetResult();
}

Jobscheduler

public static class JobScheduler
{
    public static async Task Start()
    {
        try
        {
            NameValueCollection props = new NameValueCollection
            {
                { "quartz.serializer.type", "binary" }
            };
            StdSchedulerFactory factory = new StdSchedulerFactory(props);
            IScheduler scheduler = await factory.GetScheduler();
            await scheduler.Start();
            IJobDetail job = JobBuilder.Create<Service>()
                .WithIdentity("job1", "group1")
                .Build();
            ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("trigger1", "group1")
                .StartNow()
                .WithSimpleSchedule(x => x
                    .WithIntervalInMinutes(10)
                    .RepeatForever())
                .Build();
            await scheduler.ScheduleJob(job, trigger);
        }
        catch (SchedulerException se)
        {
            Console.WriteLine(se);
        }
    }
}

服务

public class Service : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        using (StreamWriter streamWriter = new StreamWriter(@"C:pacoteIDGLog.txt", true))
        {
            await streamWriter.WriteLineAsync(DateTime.Now.ToString());
        }
    }
}

我不知道我需要做什么才能连续运行

我的 spidey Senses 告诉我scheduler正在脱落范围,您的Job运行一次,因为它的StartNow,所有内容都被清理了

尝试在最后调用方法await scheduler.Start();。它应该起作用。

最新更新