场景:
- 4 个用户启动连接到基于数据库的待办事项列表的同一客户端程序 (Winforms) 的单独实例。
- 第一个用户选择了第三个待办事项列表项。
如何更新/刷新其他 3 个用户的屏幕以反射(reflect)第 3 项不再可用?
我的想法是一个包含最后更新日期时间戳的表格。然后计时器会每隔几秒检查一次,看看是否有任何变化。
更新 1:
感谢所有人 - 肯定有很多有效答案。
我选择了 Icemanind 场景的更简单版本推荐的。
最佳答案
正如卢卡斯所建议的那样,您可以实现“推送”风格的系统,无论何时修改实体,都会将其“推送”给其他连接的用户。这可能有点复杂。使用遗留系统,我们处理这个问题的方式是通过“更改编号”列,但实际上它可以是每次修改记录时更新的任何内容。
当用户尝试修改实体时,我们查询数据库以行锁定该实体,其中“更改编号”反射(reflect)了用户当前拥有的“更改编号”。
如果锁定成功,用户可以更新/删除实体。完成后,实体上的“保存/提交”和“更改编号”会增加。
如果他们未能获得行锁并且“更改编号”相同,我们会显示一条消息,表明他们请求的实体正在被其他用户使用。如果“更改编号”不同,则消息表明他们必须刷新 View 。
关于c# - 当其他用户进行更改时刷新 Windows 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3311741/