2013-04-27 87 views
0

有沒有人有任何關於如何解決使用數據虛擬化時多用戶場景中可能出現的許多問題的指針/示例。讓我們說我們正在談論WPF和DataGrid。實現按需加載的虛擬化集合並不困難。然而,如果沒有在原來的查詢的臨時結果存儲在一個臨時區域,我們進入併發的問題,如:數據虛擬化和用戶併發性

  1. 加載新頁面可以獲取不正確的數據(併發用戶添加和刪除一些記錄,導致相同的總次數的記錄,但這會導致頁面獲取已在網格上方某處顯示的重複條目)
  2. 在滾動和加載新頁面時保留網格中的用戶選擇,其中可能存在一次選定項目從緩存過期,一旦重新加載,我們發現有人刪除了它們。我們可以取消選擇所有內容並向用戶顯示消息,但是:/另外,如果在靠近列表末尾的某處使用Shift進行選擇(多選),當列表中間出現某些項目時應該做些什麼加載一些中間頁面(併發用戶添加項目)。

回答

0

請務必記住,用戶屏幕上的任何內容在技術上都是最新的。你顯示它的那一刻你就落後於主數據集。

1)是的,當然。但是,您可以始終跟蹤您在網格上顯示的第一條記錄,並從那裏獲取您的下一頁尺寸設置。當然,被刪除的內容將會被刪除。或者,您可以嘗試使用諸如ZeroMQ或RabbitMQ之類的庫,並廣播數據集更改,並在您的數據網格當前顯示的情況下更新您的數據網格。它仍然不會完全同步,顯然,但你會減少他們不會同步的窗口。

2)當你選擇的項目你跟蹤他們的主鍵。我不知道你想對那些已經從主集中刪除的東西做什麼。但是你總是可以對所有其他人採取行動,對吧?即使他們不再顯示你可以跟蹤PK的。加載頁面時重新選擇它們。