Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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 3.4-在global.asax中启动作业不';t火_C#_Async Await_Quartz.net - Fatal编程技术网

C# Quartz.net 3.4-在global.asax中启动作业不';t火

C# Quartz.net 3.4-在global.asax中启动作业不';t火,c#,async-await,quartz.net,C#,Async Await,Quartz.net,我正在尝试用quartz.net的最新版本(3.4)运行一个简单的作业,但是它没有启动 Global.asax using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Optimization; us

我正在尝试用quartz.net的最新版本(3.4)运行一个简单的作业,但是它没有启动

Global.asax

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;

using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using Quartz.Api.ScheduledTasks;

namespace Quartz.Api
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            Task.Run(async () => { await JobScheduler.Start(); });
        }
    }
}
作业调度程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
using Quartz.Impl;

namespace Quartz.Api.ScheduledTasks
{
    public class JobScheduler
    {
        public static async Task Start()
        {
            IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
            await scheduler.Start();

            IJobDetail job = JobBuilder.Create<TestJob>().Build();

            ITrigger trigger = TriggerBuilder.Create()
                .WithDailyTimeIntervalSchedule
                (s =>
                    s.WithIntervalInSeconds(10)
                        .OnEveryDay()
                        .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(0, 0))
                )
                .Build();

            await scheduler.ScheduleJob(job, trigger);
        }
    }
}
我的作业代码中的文本文件永远不会写入磁盘

我怀疑我没有正确地使用任务,因为我的global.asax中的应用程序_Start()是一个无效方法,但我在调用堆栈中使用了异步/等待模式

是否有人知道一个好方法来设置我在quartz 3.0或更高版本的global.asax中的工作

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ...
        ScheduledTasks.JobScheduler.Start();
        ...
    }
}

不要写入
Global.asax
文件,而要将其写入
Startup.cs
文件。

如果您没有充分的理由使用
任务。请运行
并只想返回任务,请使用以下代码:

using System.Threading.Tasks;

namespace Quartz.Api.ScheduledTasks
{
    public class TestJob : IJob
    {
        public Task Execute(IJobExecutionContext context)
        {
            string[] lines = { "First line", "Second line", "Third line" };
            System.IO.File.WriteAllLines(
                @"C:\Users\GOWDY_N\source\repos\Quartz\Quartz.Api\ScheduledTasks.txt",
                lines);
            return Task.CompletedTask;
        }
    }
}

我刚刚意识到我在错误的文件夹中查找文本文件:(。我的代码运行良好。
using System.Threading.Tasks;

namespace Quartz.Api.ScheduledTasks
{
    public class TestJob : IJob
    {
        public Task Execute(IJobExecutionContext context)
        {
            string[] lines = { "First line", "Second line", "Third line" };
            System.IO.File.WriteAllLines(
                @"C:\Users\GOWDY_N\source\repos\Quartz\Quartz.Api\ScheduledTasks.txt",
                lines);
            return Task.CompletedTask;
        }
    }
}