Quartz作业不能与autofac和带有服务的构造函数一起运行

问题描述

我的石英作业如下所示

    public class ExtractTradesJob: IJob
    {
        private ITradeExtractor _TradeExtractor;

        public ExtractTradesJob(ITradeExtractor TradeExtractor)
        {
            _TradeExtractor = TradeExtractor;
        }


        public async Task GetTradesAsync(DateTime dateTime)
        {
            Console.WriteLine(dateTime);
        }

        void IJob.Execute(IJobExecutionContext context)
        {
            Task.Run(async () => await GetTradesAsync(DateTime.Now));
        }
    }

我有2个问题

  1. 由于我需要使用.NET 4.5,因此无法立即使用异步支持,所以我用来调用异步方法方法正确吗?
  2. 好像我有一个构造函数一样,该作业不会触发。我已经检查过,并且知道ITradeExtractor服务已正确注册。那么,我该如何在其构造函数中接受服务的工作呢?如果删除构造函数,则可以正确调用我的Execute方法

我正在使用AutoFac 3.5.2和Quartz 2.6.2和AutoFac.Extras.Quartz 3.5.0

我正在使用下面的代码来设置AutoFac

        public static void RegisterWithAutofac(ContainerBuilder builder)
        {
            builder.RegisterType<TradeExtractor>()
                .As<ITradeExtractor>()
                .SingleInstance();

            builder.Register(x => new StdSchedulerFactory().GetScheduler()).As<IScheduler>();


        }

我知道这些是旧软件包,但是由于不得不使用.NET 4.5的限制,这超出了我的控制范围

保罗

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...