我目前正在.NET 4中開發一個Windows服務。它連接到一個WS,它發回我需要的信息。 我使用一個計時器:每x秒,服務詢問web服務的信息。但爲了避免每次訪問WS,我想將這些憑據存儲在緩存中。Windows服務和緩存
我搜索了一下,沒有發現任何與Windows服務情況相關的東西(它總是關於ASP.NET環境)。
我試過MemoryCache
(從ObjectCache
從System.Runtime.Caching
)沒有成功。 這是我的課我使用緩存。
我是好的還是完全錯的?
public class Caching
{
private const string CST_KEY = "myinfo";
private const string CST_CACHENAME = "mycache";
private MemoryCache _cache;
public Caching()
{
_cache = new MemoryCache(CST_CACHENAME);
}
private CacheItemPolicy CacheItemPolicy
{
get
{
return new CacheItemPolicy
{
SlidingExpiration = new TimeSpan(1, 0, 0, 0),
AbsoluteExpiration = new DateTimeOffset(0, 0, 1, 0, 0, 0, new TimeSpan(1, 0, 0, 0))
};
}
}
public bool SetClientInformation(ClientInformation client_)
{
if (_cache.Contains(CST_KEY))
_cache.Remove(CST_KEY);
return _cache.Add(CST_KEY, client_, CacheItemPolicy);
}
public bool HasClientInformation()
{
return _cache.Contains(CST_KEY);
}
public ClientInformation GetClientInformation()
{
return _cache.Contains(CST_KEY) ? (ClientInformation) _cache.Get(CST_KEY) : null;
}
}
是MemoryCache
是不是很好用的類?
在[另一篇文章] [1]中,他們建議ASP.NET緩存(System.Web.Caching
),但在Windows服務中似乎很奇怪,不是嗎?
如果你能指導我一點,它將不勝感激。
編輯
我通過new DateTimeOffset(DateTime.UtcNow.AddHours(24))
改變和它完美的作品!new DateTimeOffset(0, 0, 1, 0, 0, 0, new TimeSpan(1, 0, 0, 0))
沒有區別
[1]:Caching for .NET (not in websites)強調文本
這是同樣的問題:http://stackoverflow.com/questions/6059860/memorycache-add-returns-true-but-does-not-add-item-to-cache – 2013-04-09 11:45:33