我有一个程序集,它计算一个复杂的数学值。此程序集由 ASP.NET 应用程序使用(但没有对 的引用System.Web
,因此无法访问 Web 缓存等)。
我希望为进入 Web 应用程序的所有请求缓存复杂计算的结果。
我是否正确地认为我的数学课中的静态字段将被初始化一次AppDomain
并且AppDomain
将服务于多个请求,每个请求都将从静态字段中读取?
例如:
public static class MyMath
{
private static ConcurrentDictionary<int, decimal> results = new ConcurrentDictionary<int, decimal>();
public static decimal ComputeValue(int input)
{
decimal result;
if (!results.TryGetValue(int, out result))
{
result = ComputeComplicatedValue(int);
results.TryAdd(input, result);
}
return result;
}
}
该示例是否为我提供了多个不相关请求的线程安全缓存结果?
谢谢