【发布时间】:2013-08-18 22:11:09
【问题描述】:
我是第一次使用 Fody 方法缓存 (https://github.com/Dresel/MethodCache)。我可能做错了什么,因为以下代码不起作用:
static void Main()
{
Console.WriteLine("Begin calc 1...");
var v = calc(5);
Console.WriteLine("Begin calc 2..."); //it last the same as the first function call
v = calc(5);
Console.WriteLine("end calc 2...");
}
[Cache]
static int calc(int b)
{
Thread.Sleep(5000);
return b + 5;
}
我应该使用什么来执行以下操作:
第一次调用:缓存参数作为键,返回值作为值。
任何其他调用:if cache[arg1, arg2,...] 存在返回缓存值而不完成函数?
(使用缓存属性)
【问题讨论】:
-
为什么第二个函数调用与第一个函数调用不一样?你只是在休眠线程,没有缓存在那里的操作。
-
好的,我应该使用什么来完成以下操作:第一次调用:缓存参数作为键,返回值作为值。任何其他调用:如果 cache[arg1, arg2,...] 存在返回缓存值而不完成函数?
-
据我了解,如果一个函数被缓存,它不应该被执行,但它的值应该从缓存中返回。我不明白为什么 Thread.Sleep(..) 不合适?
标签: c# method-chaining fody