如何编写C#代码,在ASP.net中名为“total”的应用程序状态中将项目增加1?
答案 0 :(得分:0)
为了修改任何Application变量,您需要在修改它之前将其锁定,以确保并行请求之间不会发生意外更改。
一个例子
Application.Lock();
var userCount = Convert.ToInt32(Application["OnlineUserCount"]);
Application["OnlineUserCount"] = ++userCount;
Application.UnLock();
Application.Lock确保只有一个线程或请求可以访问变量,其他请求在队列中等待。您可以根据需要修改值,并Application.Unlock释放锁,以便其他请求可以对Application变量起作用。
请注意,如果你依赖这个,可能会有性能损失!!
注意:页面不需要锁定应用程序对象来编辑 申请集。如果一个页面尝试编辑该应用程序 没有锁定的集合和第二页也尝试编辑 收集,IIS不发送任何错误,并且Application对象最终结束 处于不一致的状态。
答案 1 :(得分:0)
更好地使用
静态变量
和
像这样:Interlocked.Increment
private static int total= 0;
public static void Increment()
{
Interlocked.Increment(ref total);
}