我很难解决此线程MemoryCache Empty 中提到的处置 Cache 问题的解决方法:在设置后返回 null。
我最近的尝试有以下代码来获取一个实例,按照建议包装,在 using 语句中以禁止释放缓存:
private static CacheDl _instance;
public static CacheDl Instance
{
get
{
if (_instance == null)
{
using (ExecutionContext.SuppressFlow())
{
_instance = new CacheDl();
}
}
return _instance;
}
}
private static ObjectCache Cache { get { return MemoryCache.Default; } }
当然这不起作用..我也尝试将缓存“getter”包装在类似的东西中,但仍然没有交易。
我还尝试指定一个大的 pollingInterval 来完全抑制这种行为,但仍然没有成功。
private ObjectCache _cache;
private ObjectCache Cache
{
get
{
using (ExecutionContext.SuppressFlow())
{
return _cache ?? (_cache = new MemoryCache("my-cache", new NameValueCollection { { "pollingInterval", "30:00:00" } }));
}
}
}
你猜对了,没有运气。任何帮助将不胜感激。
顺便说一句,我已经向 Microsoft 请求了提到的 Fixpack,但在提交请求 4 小时后还没有收到任何回复。
老实说,我真的更希望将其汇总到官方的 Windows 更新中,这样我们就不必费力地让它在非 .NET 4.5 系统上运行。
更新: 具体来说,我想知道我打算如何实施推荐的解决方法。有人可以举例说明如何实施吗?