簡単なコードスニペットで私の問題を示します。
これは人気のあるシナリオです。ユーザーはキャッシュがないときにページをロードするため、キャッシュを生成します。私のコード例では、キャッシュを保存するのに 120 秒かかり、この前に静的変数をインクリメントします。
私の質問は、同じ瞬間にこのページを何度も開いてキャッシュがnullの場合、静的変数「i」が増加しない理由です。
public partial class _Default : Page
{
static int i = 0;
protected void Page_Load(object sender, EventArgs e)
{
int i;
var cache = Cache.Get("cache") as string;
if (string.IsNullOrEmpty(cache))
{
i = GenerateCache();
}
else
{
i = Convert.ToInt32(cache);
}
Response.Write(i.ToString());
}
public int GenerateCache()
{
var sw = new Stopwatch();
sw.Start();
++i;
Response.Write(i+"<br>");
while (sw.ElapsedMilliseconds < 1000 * 120) { }
Cache.Insert("cache", i.ToString());
return i;
}
}