我的页面顶部有一个文本框。加载页面时,代码将运行文本框的值,即Textbox.text= something
。该代码的逻辑是:
它完美无缺。但我想知道如果两个用户访问同一页面,我应该在加载页面时如何处理这种情况。
示例当列表加载时,DB列中的最后一个值为8,并在文本框中显示为9。
但是,如果两个用户在不同的浏览器上同时加载页面会导致问题,因为我不想在我的列中重复。
答案 0 :(得分:0)
这里你可以做的是在插入db之前先获取colum中的最后一个值然后+1值,然后将其插入db。
但有一个问题是,如果您的User1和User2在文本框中看到 8 值,并且User1点击按钮 9 将存储在db列中,然后是User2点击按钮 10 值将被存储。
答案 1 :(得分:0)
最好的办法是将数据库值加载到内存中(例如静态变量),并在递增并将结果返回给各个用户之前使用lock
的方法。 e.g。
private static object _syncRoot = new object();
private static int? dbValue;
public static int GetNewDbValue()
{
if (dbValue == null)
{
// load db value from database
}
// lock ensures only one user can increment at a time
lock (_syncRoot)
{
dbValue++;
return dbValue;
}
}
只要您没有运行Web场或负载平衡,这将起作用。如果你想远离静电,你可以尽可能地确保你使用的对象可以集中访问。