Advertisement
Guest User

Untitled

a guest
Dec 17th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.12 KB | None | 0 0
  1.  public class IoCJobFactory : IJobFactory
  2.     {
  3.         private static readonly Dictionary<IJob, IServiceScope> scopeDict = new  Dictionary<IJob, IServiceScope>();
  4.         private readonly IServiceProvider _factory;
  5.  
  6.         public IoCJobFactory(IServiceProvider factory)
  7.         {
  8.             _factory = factory;
  9.         }
  10.         public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
  11.         {
  12.             try
  13.             {
  14.                 var scope = _factory.CreateScope();
  15.                 var result = scope.ServiceProvider.GetService(bundle.JobDetail.JobType) as IJob;
  16.                 scopeDict.Add(result,scope);
  17.                 return result;
  18.             }
  19.             catch (Exception e)
  20.             {
  21.                 Log.Logger.Error("Error creating job  {error}", e);
  22.                 return default(IJob);
  23.             }
  24.          
  25.         }
  26.  
  27.         public void ReturnJob(IJob job)
  28.         {
  29.             if (!(job is IDisposable disposable)) return;
  30.             disposable.Dispose();                
  31.             scopeDict[job]?.Dispose();
  32.             scopeDict.Remove(job);
  33.         }
  34.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement