我们可以使用StructureMap创建一个自定义LifeCycle,其中对象必须在Singleton范围内指定preiod of time,之后必须再次创建对象。简而言之,我们可以每20或30分钟创建一次物体。
答案 0 :(得分:0)
当然,请参阅例如http://www.mikeobrien.net/blog/creating-structuremap-lifecycle-for-wcf/有关如何实现ILifecycle的示例(在这种情况下由WCF支持,但您也可以将其设置为线程本地或静态)。在x分钟过去之后,您只需添加逻辑以返回新的IObjectCache实例。
在那里复制/粘贴代码:
public class WcfOperationLifecycle : ILifecycle
{
public static readonly string ITEM_NAME = "STRUCTUREMAP-INSTANCES";
public void EjectAll()
{
FindCache().DisposeAndClear();
}
public IObjectCache FindCache()
{
if (!OperationContext.Current.OutgoingMessageProperties.ContainsKey(ITEM_NAME))
OperationContext.Current.OutgoingMessageProperties.Add(ITEM_NAME, new MainObjectCache());
return (IObjectCache)OperationContext.Current.OutgoingMessageProperties[ITEM_NAME];
}
public string Scope { get { return "WcfOperationLifecycle"; } }
}