2013-04-27 1 views
0

데이터 가상화를 사용할 때 다중 사용자 시나리오에서 가능한 많은 문제를 해결하는 방법에 대한 지침/예제가있는 사람이 있습니까? 우리가 WPF와 DataGrid에 대해 말하고 있다고 가정 해 보겠습니다. 요구에 따라로드되는 가상화 된 콜렉션을 구현하는 것은 그렇게 어렵지 않습니다. 새 페이지를로드데이터 가상화 및 사용자 동시 처리

  1. 가 잘못된 데이터를 가져올 수 (동시 사용자가 동일한 총 개수로 이어지는, 일부 레코드를 추가하고 제거합니다 같은 그러나, 원래 쿼리의 임시 결과가 저장되는 준비 영역없이, 우리는 동시성 문제에 들어가 그러나 이미 그리드의 위 어딘가에 표시되어있는 중복 항목을 가져 오는 페이지가 생성됩니다.
  2. 일단 선택한 항목에 한 번만 표시 될 가능성이있는 새 페이지를 스크롤하고로드 할 때 그리드에서 사용자 선택 유지 캐시에서 만료되었고 한 번 다시로드되면 누군가 삭제했다고합니다. 모든 항목의 선택을 취소하고 사용자에게 메시지를 표시 할 수 있습니다./또한 Shift 키 (여러 항목)를 사용하여 목록의 끝 부분을 선택하면 일부 항목이 목록 중간에 표시 될 때 수행해야 할 작업 중간 페이지 중 일부를로드 할 때 (동시 사용자 추가 항목).

답변

0

사용자의 화면에는 기술적으로 최신 정보가 없습니다. 보여 주면 마스터 데이터에 뒤떨어져 있습니다.

1) 물론 있습니다. 그러나 그리드에 표시되는 첫 번째 레코드를 항상 추적하고 그 다음 페이지 크기 세트를 얻을 수 있습니다. 물론 삭제 된 항목은보기가 안됩니다. 선택적으로 ZeroMQ 또는 RabbitMQ와 같은 라이브러리를 사용하고 데이터 세트 변경 사항을 브로드 캐스트하고 현재 표시된 경우 DataGrid를 실시간으로 업데이트 할 수 있습니다. 여전히 완벽하게 동기화되지는 않지만 분명히 동기화되지 않는 창은 줄어 듭니다.

2) 항목을 선택하면 기본 키를 추적합니다. 나는 당신이 마스터 세트에서 이미 삭제 된 것들로하고 싶은 것을 모른다. 그러나 당신은 항상 다른 모든 사람들에게 행동 할 수 있습니다. 더 이상 표시되지 않더라도 PK를 추적 할 수 있습니다. 페이지를로드 할 때 다시 선택하십시오.