数据虚拟化和用户并发性

问题描述:

有没有人有任何关于如何解决使用数据虚拟化时多用户场景中可能出现的许多问题的指针/示例。让我们说我们正在谈论WPF和DataGrid。实现按需加载的虚拟化集合并不困难。然而,如果没有在原来的查询的临时结果存储在一个临时区域,我们进入并发的问题,如:数据虚拟化和用户并发性

  1. 加载新页面可以获取不正确的数据(并发用户添加和删除一些记录,导致相同的总次数的记录,但这会导致页面获取已在网格上方某处显示的重复条目)
  2. 在滚动和加载新页面时保留网格中的用户选择,其中可能存在一次选定项目从缓存过期,一旦重新加载,我们发现有人删除了它们。我们可以取消选择所有内容并向用户显示消息,但是:/另外,如果在靠近列表末尾的某处使用Shift进行选择(多选),当列表中间出现某些项目时应该做些什么加载一些中间页面(并发用户添加项目)。

请务必记住,用户屏幕上的任何内容在技术上都是最新的。你显示它的那一刻你就落后于主数据集。

1)是的,当然。但是,您可以始终跟踪您在网格上显示的第一条记录,并从那里获取您的下一页尺寸设置。当然,被删除的内容将会被删除。或者,您可以尝试使用诸如ZeroMQ或RabbitMQ之类的库,并广播数据集更改,并在您的数据网格当前显示的情况下更新您的数据网格。它仍然不会完全同步,显然,但你会减少他们不会同步的窗口。

2)当你选择的项目你跟踪他们的主键。我不知道你想对那些已经从主集中删除的东西做什么。但是你总是可以对所有其他人采取行动,对吧?即使他们不再显示你可以跟踪PK的。加载页面时重新选择它们。