public LazySessionFactory(ISessionFactoryInitializion sessionFactoryInitializion) { if (sessionFactoryInitializion == null) { throw new ArgumentNullException("sessionFactoryInitializion"); } if (sessionFactoryInitializion.ConfigurationProvider == null) { throw new ArgumentException("ConfigurationProvider cannot be null.", "sessionFactoryInitializion"); } _sessionFactory = new Lazy <ISessionFactory>(() => InitializeSessionFactory(sessionFactoryInitializion.ConfigurationProvider, sessionFactoryInitializion.OnInitialized)); _defaultCurrentSessionContextBinder = new Lazy <ICurrentSessionContextBinder>(() => GetCurrentSessionContextBinder(Value)); switch (sessionFactoryInitializion.InitializationMode) { case SessionFactoryInitializationMode.Eager: Value = _sessionFactory.Value; break; case SessionFactoryInitializationMode.Background: initializeInBackground(sessionFactoryInitializion); break; } }
void initializeInBackground(ISessionFactoryInitializion sessionFactoryInitializion) { ValueCreationTask = Task.Factory.StartNew(() => { try { Value = _sessionFactory.Value; } catch (Exception exception) { if (sessionFactoryInitializion.OnBackgroundInitializationException == null) { throw; } sessionFactoryInitializion.OnBackgroundInitializationException(exception); } }, TaskCreationOptions.LongRunning); }
public TestLazySessionFactory(ISessionFactory sessionFactory, ISessionFactoryInitializion sessionFactoryInitializion) : base(sessionFactoryInitializion) { _sessionFactory = sessionFactory; }