Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么quartz.net不执行我的所有代码?_C#_Asp.net Mvc_Quartz.net - Fatal编程技术网

C# 为什么quartz.net不执行我的所有代码?

C# 为什么quartz.net不执行我的所有代码?,c#,asp.net-mvc,quartz.net,C#,Asp.net Mvc,Quartz.net,我正在使用mvc中使用quartz.net调度的任务,但不幸的是,并非所有代码都完全运行,并且忽略了大部分代码步骤。 经过大量工作并与前面的示例进行比较后,我意识到从IJOB类继承的Execute函数是一个异步类型,在调用global.asax后,我必须按如下方式定义它,在这种情况下,它不会完全执行代码并忽略部分代码。 谢谢你的帮助,因为我真的很烦 Global.asax: public class Global : HttpApplication { void Applica

我正在使用mvc中使用quartz.net调度的任务,但不幸的是,并非所有代码都完全运行,并且忽略了大部分代码步骤。 经过大量工作并与前面的示例进行比较后,我意识到从IJOB类继承的Execute函数是一个异步类型,在调用global.asax后,我必须按如下方式定义它,在这种情况下,它不会完全执行代码并忽略部分代码。 谢谢你的帮助,因为我真的很烦 Global.asax:

public class Global : HttpApplication
{
    
    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        ConfigureStoryQuartzJobs().Wait();

    }



    public static  async Task ConfigureStoryQuartzJobs()
    {
        DateTimeOffset startTime = DateTime.UtcNow;

        IJobDetail job = JobBuilder.Create<CheckContent>()
                                  .WithIdentity("job1")
                                  .Build();
        ITrigger trigger = TriggerBuilder.Create()
                                         .StartAt(startTime)
                                         .WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever())
                                         .Build();
        ISchedulerFactory sf = new StdSchedulerFactory();
        IScheduler sc = await sf.GetScheduler();
      await  sc.ScheduleJob(job, trigger);
       await sc.Start();

    }
}

忽略了哪些部分,您是如何确定的?只执行第一个函数的一部分,并在加载页面后拒绝执行。我认为,不应在应用程序启动时调用异步函数,我使用Wait()函数解决了这个问题,在代码操作结束时可以忽略这个问题,但是我对此一无所知。
Wait()
调用在某种程度上是“危险的”。您正在阻止处理此问题的线程。您能否先尝试将您的主函数更改为
异步无效应用程序\u Start
,并使用
等待配置StoryQuartZjobs()
作为最后一行,而不是
等待()
?或者,如果没有
等待
,可能会触发并忘记,也许这就是应该做的(从
ConfigureStoryQuartzJob
中删除所有
wait
和async)。您只想启动调度程序并让它在后台运行,而忽略了部分,您是如何确定的?只执行第一个函数的一部分,并在加载页面后拒绝执行。我认为,不应在应用程序\u start中调用异步函数,并且我已使用了Wait()函数来解决此问题,在代码操作结束时可以忽略此问题,但对此我没有其他想法。
Wait()
调用在某种程度上是“危险的”。您正在阻止处理此问题的线程。您是否可以首先尝试将主函数更改为
异步无效应用程序\u Start
,并使用
等待配置StoryQuartzJobs()
作为最后一行,而不是
等待()
?或者,如果没有
等待
,则可能会发生火灾并忘记,也许这就是应该做的(从
ConfigureStoryQuartzJob
中删除所有
wait
和async)。您只需启动计划程序并让它在后台运行即可
 public class CheckContent : IJob
{

    public async Task Execute(IJobExecutionContext context)
    {
      await  RelaseContent.SendStory();
      await  RelaseContent.SendPost();
      await  RelaseContent.SendAlboum();
    }
}