Rom*_*man 9 .net c# structuremap asp.net nhibernate
在Windows服务中执行后台任务时,我用于HybridHttpOrThreadLocalScoped存储NHibernate ISessions的内容.
由于在Windows Server中没有HTTPContext,我想知道是否只调用ReleaseAndDisposeAllHttpScopedObjects()它足以释放该线程的ISession实例?
Rom*_*man 15
我发现了如何回答这个问题.ReleaseAndDisposeAllHttpScopedObjects()ObjectFactory公开的方法实际上与HttpContext有关,因此也与Web应用程序有关.
Structuremap.Pipeline命名空间中的HybridLifeCycle类允许直接访问ThreadLocal存储中的缓存对象并进行处置.这是一个例子:
Action.For<IUnitOfWork>().HybridHttpOrThreadLocalScoped().Use<UnitOfWork>();
Run Code Online (Sandbox Code Playgroud)
上面的代码注册了提供的类型,并将其实例缓存在HttpContext或ThreadLocal存储中.从IDisposable继承这些类型总是一个好主意.因此,在此示例中,UnitOfWork也是IDisposable.
new HybridLifecycle().FindCache().DisposeAndClear();
Run Code Online (Sandbox Code Playgroud)
现在要处理与Web应用程序或Windows服务无关的缓存对象,上面的行足以配置UnitOfWork而不是ReleaseAndDisposeAllHttpScopedObjects()方法.我希望这可以帮助别人.
| 归档时间: |
|
| 查看次数: |
3430 次 |
| 最近记录: |