c# - 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 个问题
- 由于我需要使用 .NET 4.5,开箱即用的异步支持不可用,所以我用来调用异步方法的方法是否正确?
- 好像我有一个构造函数,就像我的情况一样,这项工作不会触发。我已经检查并且知道 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 的限制意味着这超出了我的控制范围
保罗
解决方案
推荐阅读
- javascript - How to correctly include vue-router via cdn to make history mode working?
- azure - Azure Function v1 Post Build 任务失败并出现非法字符错误消息
- php - 从特定 JSON 数组中提取值
- azure - 如何通过将 ASPNETCORE_ENVIRONMENT 环境变量设置为 Development 并重新启动应用程序来启用开发环境
- java - Cucumber 场景未在 Windows 10 上的 Intellij IDEA 中运行
- flutter - 设备后退按钮可以自动调用 pop() 吗?
- python - 列表列表的一列中唯一数据的计数
- python - 在数据框中附加匹配的列
- python - 如何绘制一列作为数据,另一列作为颜色编号的熊猫数据框?
- python - 如何在 functools.partialmethod 上设置属性?