ASP.NET中如何实现同一时间只有一人能够修改系统数据

有些特殊的系统中,要求同一时间,只能有一个人能够修改系统数据,这时其他人修改数据时,处于“锁”的状态,只有修改数据的人退出时其他人才可进行修改操作。

我们通过设置一个全局开关变量(Application),当第一个用户修改数据时,将该变量至为一个表示锁状态的值(例如LOCK),其他用户要修改数据前,检查是否能够修改,通常一下几种情况将该修改权释放(将变量置为UNLOCK)
1.修改数据的用户退出系统
2.修改数据的用户长时间不操作
3.修改数据的用户关闭IE

第一种情况,我们可以通过用户点击“退出”按钮时处理;

第二种情况,用户长时间不操作我们可在Session_End事件中处理,具体这个时间长度可以在web.config中设置
(Session_end事件的触发条件,Session.Abandon()或长时间未操作都能够触发该事件)

第三种情况,用户关闭IE,如果不处理这种情况,其实并不是Application对象永远处于锁的状态,IE关闭后Session_End事件依然能够触发,也就是系统将一直等到Session_End事件触发时才能释放该资源,但是这样不是很好,如果触发Session_End事件的时间是1小时...此种情况我们可以在页面中下入Javascript,当用户关闭页面时,跳转到一个处理退出的页面,处理完毕后马上自动关闭。
<script language="javascript" id="clientEventHandlersJS" type="text/javascript"> </script> <script language="javascript" id="clientEventHandlersJS" type="text/javascript"> </script> function window_onunload() {
{
  if (event.clientX < 0 && event.clientY < 0)
 window.open('LogOut.aspx','','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,top=2000,left=2000,width=0,height=0');
}
我们在LogOut.aspx页面中将Application变量解锁

这个问题在一些其他的应用中也同样存在,例如网站的实时在线用户列表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值