参考数据库里面读锁、写锁、排他锁的思路,当第一个人打开表单时,加上锁,后面打开的人可以查看不能修改
锁
上锁lock(object)
使用版本控制是可以的,甲乙两个人打开时,拿到的都是 V1 版本的表单,现在两人同时提交,系统同时收到两个修改请求,这时候你需要保证修改操作是串行的(依据具体的基础设施,其实现方式可能不同)。假设甲的修改操作先处理,那么甲先判断目前的版本号是否为 V1,如果是就修改,并将版本号修改为 V2,如果不是则放弃;系统接着处理乙的请求,流程同甲一样,由于版本已经被甲修改为 V2 了,所以乙修改不会成功。
加锁.操作完后修改表单状态.就不会重复提交了
lock就行,不要想太复杂了
一般上锁,或者用单例,同一时间只允许一个实例执行,然后就是你怎么规则这个工作流实例了。一般并发,都是用多线程单例来处理
直接在C#处理提交处理的地方套上lock()代码块就行。