如何使用windsor容器配置实例= Lifestyle = Thread

时间:2011-02-25 13:11:57

标签: castle-windsor

我正在使用windsor容器进入赢取服务。 我正在使用Linq2sql进行持久化。 Linq2Sql DC的一个实例已经注入到2组件UnitOfWork和Repository中 我可能会将生活方式设置为Singleton for DC + UoW + Repository,但我长期关注我的Dc会坚持许多影响记忆的因素而我的应用程序没有任何理由:在我完成了一个实体后我赢了'再使用它,但DC上没有公共方法来清除缓存。

由于我的DC将注入2个组件,我不能使用Lifestyle.Transient,否则将创建2个实例(每次注入一个)

所以我决定将生活方式设置为线程:我的应用程序有计时器每隔n分钟执行一次作业,每次滴答我踢一个新线程。 在这种情况下,将在每个线程上创建一个新DC,并如上所述注入2个cmps。由于处理Lifestyle = Thread的策略与singleton相同(在容器处理/我的应用程序结束/停止时),我担心在winservice停止之前对象容纳到容器中的数量。

因为我在我的线程上调用了Join(),所以当它结束时我会显而易见。我在想 从容器中提取我的3个objs并调用dispose,但我不喜欢这种方法:我更喜欢容器处理他自己的对象......

有任何意见/建议吗?

我还想创建自己的生活方式来完成我在线程结束时的处理,基本上模拟使用PerWebRequest发生在Web场景中的事情(在请求结束时将处理所有cmps)。有没有示例如何创建自定义生活方式?

0 个答案:

没有答案