Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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# asp.net(4.x)和quartz.net(3.0.7.0)quartz_jobs.xml在Global.asax应用程序中显示\u启动_C#_Asp.net_Quartz.net_Global Asax - Fatal编程技术网

C# asp.net(4.x)和quartz.net(3.0.7.0)quartz_jobs.xml在Global.asax应用程序中显示\u启动

C# asp.net(4.x)和quartz.net(3.0.7.0)quartz_jobs.xml在Global.asax应用程序中显示\u启动,c#,asp.net,quartz.net,global-asax,C#,Asp.net,Quartz.net,Global Asax,对于在quartz.NET3.x之前的IIS8下运行的小型家用项目以及它所采用的异步方向来说,一切都很好。由于我的动机是跟随3.x的一般发展,所以我遇到了运行时问题,我无法在线找到解决方案 有人能给我举个例子,说明如何使用quartz_jobs.xml文件在asp.net 4.x global.asax应用程序_start方法中调度作业 我得到的运行时错误如下: System.InvalidOperationException:“不能对已完成的任务调用Start。” 已运行的代码: Task&l

对于在quartz.NET3.x之前的IIS8下运行的小型家用项目以及它所采用的异步方向来说,一切都很好。由于我的动机是跟随3.x的一般发展,所以我遇到了运行时问题,我无法在线找到解决方案

有人能给我举个例子,说明如何使用quartz_jobs.xml文件在asp.net 4.x global.asax应用程序_start方法中调度作业

我得到的运行时错误如下:
System.InvalidOperationException:
“不能对已完成的任务调用Start。”

已运行的代码:

Task<IScheduler> scheduler;
protected void Application_Start(object sender, EventArgs e)
{
  StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory();
  scheduler = stdSchedulerFactory.GetScheduler();
  scheduler.Start(); /* the line that is responsible for the runtime error */
}
任务调度器;
受保护的无效应用程序\u启动(对象发送方,事件参数e)
{
StdSchedulerFactory StdSchedulerFactory=新StdSchedulerFactory();
scheduler=stdSchedulerFactory.GetScheduler();
scheduler.Start();/*导致运行时错误的行*/
}
我知道在IIS下安排作业的反对意见,但在考虑之后选择这样做,因此任何关于如何避免此错误的示例都将不胜感激

问候。

石英3中的GetScheduler()不会返回
isScheduler
。它返回
任务
。巧合的是,两种类型,
Task
IScheduler
,都有
Start()
方法

要使用类似于
应用程序_Start
的同步方法将
任务
转换为
IScheduler
,您首先必须等待任务结束,然后获取其结果

var realScheduler = scheduler.GetAwaiter().GetResult();
realScheduler.Start().Wait(); // you have to wait here too, because IScheduler.Start is also async