您的位置:首页 > 其它

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

2011-10-08 16:15 417 查看
背景:c#开发C/S程序,甘特图界面,后台使用oracle数据库。

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

方式一:

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

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

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

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

方式二:

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

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

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

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

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

方式三:

岗位管理责任制,限定不同权限或者不同的岗位操作不同的控件。:)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐