多个客户端操作甘特图时,如何做才能实现不允许对一个控件并发操作

背景:c#开发C/S程序,甘特图界面,后台使用oracle数据库。

 

该甘特图界面是一个控件拖动界面,每个控件的移动代表着资源的分配情况。有多客户端操作。

 

方式一:

在一个用户进行拖动时,首先使用select * from tablename where 该资源记录的过滤条件 for update nowait,将该记录加锁,为提高效率,将其封装入存储过程中。

 

这样当另一个用户试图同时拖动时,会出现Exception提示资源正在被使用,禁止同时操作。

 

当第一个用户拖动操作完成时,将该行锁释放(执行rollback)。

 

好处:不用更改表结构,效率高。

 

方式二:

 

在后台数据库的分配的资源情况表中加入一个字段,用来做资源是否正在拖动的状态记录,如果正在被拖动,则更新为0,拖动完毕为1。

在一个用户进行拖动时,首先更改该状态记录为0,拖动完毕后,更新为1。

另一个用户进行同时拖动时,会先查看该字段是否为1。

好处:依赖后台数据库进行处理。

不好的地方:更改表结构,效率比方式一低。

 

方式三:

岗位管理责任制,限定不同权限或者不同的岗位操作不同的控件。:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值