gpt4 book ai didi

.net - 使用几个构造函数参数创建一个Quartz.NET Job

转载 作者:行者123 更新时间:2023-12-04 10:07:09 25 4
gpt4 key购买 nike

我有一份工作,需要在另一个对象上启动一些方法。我希望能够将这些传递给其构造函数中的工作。

环顾四周,看来实现此目标的唯一方法是使用IoC框架之一。尽管此方法将来会成为我的解决方案,但现在我需要一种通用的解决方案,而不需要任何IoC。

我知道JobDataMap,但是Best Practices文档建议您不要进行序列化。该对象是多线程且有状态的,因此无论如何串行化都会使代码自杀。

如何创建类似于以下内容的工作:

public class MyJob : IJob
{
private readonly IFoo _foo;

public StopMonitoring(IFoo foo)
{
_foo = foo;
}

public void Execute(IJobExecutionContext context)
{
foo.GetCurrentState();
}
}
}

最佳答案

您需要使用JobFactory:

internal sealed class IntegrationJobFactory : IJobFactory
{
private readonly IUnityContainer _container;

public IntegrationJobFactory(IUnityContainer container)
{
_container = container;
}

public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
{
var jobDetail = bundle.JobDetail;

var job = (IJob)_container.Resolve(jobDetail.JobType);
return job;
}

public void ReturnJob(IJob job)
{
}
}

并使用它:
var _scheduler = schedulerFactory.GetScheduler();
var _scheduler.JobFactory = new IntegrationJobFactory(container);

关于.net - 使用几个构造函数参数创建一个Quartz.NET Job,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31861146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com