本文整理汇总了C#中ICacheManager.Update方法的典型用法代码示例。如果您正苦于以下问题:C# ICacheManager.Update方法的具体用法?C# ICacheManager.Update怎么用?C# ICacheManager.Update使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ICacheManager
的用法示例。
在下文中一共展示了ICacheManager.Update方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Thread_Update
public void Thread_Update(ICacheManager<object> cache)
{
using (cache)
{
var key = Guid.NewGuid().ToString();
var handleInfo = string.Join("\nh: ", cache.CacheHandles.Select(p => p.Configuration.Name + ":" + p.GetType().Name));
cache.Remove(key);
cache.Add(key, new RaceConditionTestElement() { Counter = 0 });
int numThreads = 5;
int iterations = 10;
int numInnerIterations = 10;
int countCasModifyCalls = 0;
// act
ThreadTestHelper.Run(
() =>
{
for (int i = 0; i < numInnerIterations; i++)
{
cache.Update(key, (value) =>
{
var val = (RaceConditionTestElement)value;
val.Counter++;
Interlocked.Increment(ref countCasModifyCalls);
return value;
});
}
},
numThreads,
iterations);
// assert
Thread.Sleep(10);
for (var i = 0; i < cache.CacheHandles.Count(); i++)
{
var handle = cache.CacheHandles.ElementAt(i);
var result = (RaceConditionTestElement)handle.Get(key);
if (i < cache.CacheHandles.Count() - 1)
{
// only the last one should have the item
result.Should().BeNull();
}
else
{
result.Should().NotBeNull(handleInfo + "\ncurrent: " + handle.Configuration.Name + ":" + handle.GetType().Name);
result.Counter.Should().Be(numThreads * numInnerIterations * iterations, handleInfo + "\ncounter should be exactly the expected value.");
countCasModifyCalls.Should().BeGreaterOrEqualTo((int)result.Counter, handleInfo + "\nexpecting no (if synced) or some version collisions.");
}
}
}
}
示例2: TestEachMethod
public static void TestEachMethod(ICacheManager<object> cache)
{
cache.Clear();
cache.Add("key", "value", "region");
cache.AddOrUpdate("key", "region", "value", _ => "update value", 22);
cache.Expire("key", "region", TimeSpan.FromDays(1));
var val = cache.Get("key", "region");
var item = cache.GetCacheItem("key", "region");
cache.Put("key", "put value");
cache.RemoveExpiration("key");
object update2;
cache.TryUpdate("key", "region", _ => "update 2 value", out update2);
object update3 = cache.Update("key", "region", _ => "update 3 value");
cache.Remove("key", "region");
cache.Clear();
cache.ClearRegion("region");
}
示例3: TestEachMethod
public static void TestEachMethod(ICacheManager<object> cache)
{
cache.Clear();
cache.Add("key", "value", "region");
cache.AddOrUpdate("key", "region", "value", _ => "update value", new UpdateItemConfig(2, VersionConflictHandling.EvictItemFromOtherCaches));
cache.Expire("key", "region", TimeSpan.FromDays(1));
var val = cache.Get("key", "region");
var item = cache.GetCacheItem("key", "region");
cache.Put("key", "region", "put value");
cache.RemoveExpiration("key", "region");
object update2;
cache.TryUpdate("key", "region", _ => "update 2 value", out update2);
object update3 = cache.Update("key", "region", _ => "update 3 value");
cache.Remove("key", "region");
cache.Clear();
cache.ClearRegion("region");
}