MvvM 에서 ui 속성에 대량의 데이터 바인딩시 순간 ui가 순간 block 됩니다.

선배님들 안녕하세요^^
며칠째 고민중인데
해결이 안되네요.

View에 차트 컨트롤이 있습니다.

ViewModel에서는
차트 데이터와
바인딩으로 연결된 속성이 있습니다.

대량의 컬렉션 데이터를
바인딩 속성에 할당하게 되면

View 전체 ui가 정도 3초 block 됩니다.

물런 차트가 렌더링 되는 시간이 딜레이
되는거지만

할당전부터 애니메이션이 동작중인데
Ui가 block 되면서 기존 에니메이션 까지
멈춤 현상이 있어서요.

View xam 해당 차트 속성에 IsAsync=True 설정해도
block을 피할수 없더군요.

ViewModel에서
비동기로 바인딩속성에 대량 데이터를
할당해봐도 똑같구요.

해당컨트롤에서 비동기로 렌더링하지 않는 이상
코드에서 방법이 없는걸까요?

참고로 차트에서
렌더링 되는

라인수는 66개 입니다.

개당 라인이 표현하는 데이터수는
24,000건 입니다.

선배님들 조언을 듣고 싶습니다.

3개의 좋아요

애니메이션 자체를 쓰레드로 처리하시고 차트업로드 하시면 되지않을까요??

2개의 좋아요

답변 감사합니다.

스레드로 애니를 실행하면 괜찮을까요?
같은 윈도우 창에서 동시 실행되는건데
차트가 업데이트 되는 순간 창 자제가
Block 이 되는것 같아서요.

아니면 애니를 별도의 윈도우창으로 띄워야
할까요?

3개의 좋아요

ui도 하나의 스레드이기때문에

또다른 스레드 애니메이션을 돌린다면 문제는 없을 것 같긴한데
예전에했던거라 가물가물하네요…
만약 문제가 된다면 말씀하신대로 윈도우로 띄우셔도될거같네요

2개의 좋아요

주식 차트 같은 것을 표현하려 하시나 보네요… 66 * 24,000 건이면 158만4천 건으로 화면에 표현하기 상당히 큰 값 같습니다. 차트 라이브러리에 따라 대량의 데이터를 표현할 때 굉장히 느린 경우가 대부분일 것이고 관련해서 최적화 된 차트 라이브러리를 쓰셔야 할 것 같습니다. 대부분의 경우 그 정도 데이터일 경우 느리게 화면에 표현됩니다.

대량의 데이터를 표현하는데 최적화된 차트 라이브러리를 사용하시나요?

그렇지 않을 경우 데이터를 전 처리 하거나 로딩이 완료될 때까지 로딩중이라는 메시지를 띄워주는 것이 좋겠습니다.

24,000건이 시간 당 1,000건을 표현한 것이라면 분당 16개의 정보가 있는 셈인데 가령, 이를 10분당 한건으로 차트에 표현할 수 도 있겠습니다. 그럼 라인당 데이터 건수는 144건으로 표현할 수 있겠죠.

3개의 좋아요