Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class IoCJobFactory : IJobFactory
- {
- private static readonly Dictionary<IJob, IServiceScope> scopeDict = new Dictionary<IJob, IServiceScope>();
- private readonly IServiceProvider _factory;
- public IoCJobFactory(IServiceProvider factory)
- {
- _factory = factory;
- }
- public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
- {
- try
- {
- var scope = _factory.CreateScope();
- var result = scope.ServiceProvider.GetService(bundle.JobDetail.JobType) as IJob;
- scopeDict.Add(result,scope);
- return result;
- }
- catch (Exception e)
- {
- Log.Logger.Error("Error creating job {error}", e);
- return default(IJob);
- }
- }
- public void ReturnJob(IJob job)
- {
- if (!(job is IDisposable disposable)) return;
- disposable.Dispose();
- scopeDict[job]?.Dispose();
- scopeDict.Remove(job);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement