如何释放HybridHttpOrThreadLocalScoped对象StructureMap? [英] How to release HybridHttpOrThreadLocalScoped objects in StructureMap?

查看:227
本文介绍了如何释放HybridHttpOrThreadLocalScoped对象StructureMap?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当在Windows服务我用 HybridHttpOrThreadLocalScoped 存储的NHibernate的iSessions的intances执行后台任务。

When performing background tasks in a Windows Service I used HybridHttpOrThreadLocalScoped for storing intances of NHibernate ISessions.

由于在Windows Server中还没有一个HttpContext的,我想知道如果只调用 ReleaseAndDisposeAllHttpScopedObjects()是足以释放ISession实例为主题?

Since within a Windows Server there isn't a HTTPContext, I'm wondering if only calling the ReleaseAndDisposeAllHttpScopedObjects() is enough to release the ISession instance for that thread?

推荐答案

我发现了如何回答这个问题。该 ReleaseAndDisposeAllHttpScopedObjects()法的的ObjectFactory暴露的是真的关心的HttpContext,因此Web应用程序。

I found out how to answer this question. The ReleaseAndDisposeAllHttpScopedObjects() method exposed by the ObjectFactory is really concerned with the HttpContext and therefore web applications.

从Structuremap.Pipeline命名空间的HybridLifeCycle类允许直接访问缓存的对象ThreadLocal的内部存储和处理它们。下面是一个例子:

The HybridLifeCycle class from the Structuremap.Pipeline namespace allows to directly access cached objects inside the ThreadLocal storage and dispose them. Here is an example:

Action.For<IUnitOfWork>().HybridHttpOrThreadLocalScoped().Use<UnitOfWork>();

以上code寄存器提供的类型和缓存中的HttpContext或ThreadLocal中存储的实例。它总是以自IDisposable inherite这些类型是个好主意。因此,在本实施例中的UnitOfWork也是IDisposable的

Above code registers the supplied type and caches its instances in the HttpContext or the ThreadLocal storage. It's always a good idea to inherite those types from IDisposable. Thus in this example UnitOfWork is also an IDisposable.

new HybridLifecycle().FindCache().DisposeAndClear();

现在处置缓存对象的Web应用程序或窗口服务regardsless上面的行足以处置的 ReleaseAndDisposeAllHttpScopedObjects()法的UnitOfWork代替。我希望这可以帮助别人。

Now to dispose cached objects regardsless of a web application or windows service the above line is sufficient to dispose the UnitOfWork instead of the ReleaseAndDisposeAllHttpScopedObjects() method. I hope this helps someone.

这篇关于如何释放HybridHttpOrThreadLocalScoped对象StructureMap?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆