IT정보공유/C#

[ C# ] ListView 느린 갱신 속도를 빠르게 갱신하는 방법 BeginUpdate() EndUpdate()

알지오™ 2016. 11. 10.

C# 상용컴포넌트를 쓰지 않고, 기본 ListView를 사용하다 보면 속이 터집니다.

왜냐면 ListView에 데이터를 채워 넣다 보면 느리기 때문입니다.

 

몇 백건에서 몇 천건 정도야 뭐 그냥 대충 넣어도 티가 안나는데, 만건 이상의 데이터를 Add 하다보면

엄청 느려지게 되죠.

[ C# ] ListView 느린 갱신 속도를 빠르게 갱신하는 방법 BeginUpdate() EndUpdate()

그래서 리스트뷰에 대용량 데이터를 집어넣을 때 사용하라고 준비된 함수가 있습니다.

ListView.BeginUpdate() 와 ListView.EndUpdate() 함수입니다.

 

            try
            {
                lstView2.BeginUpdate();
                 // lstView2.Items.Clear();
                // 리스트뷰 데이터 인서트 작업 ....
            }
            finally
            {
                lstView2.EndUpdate();
            }

 

try finally 구문으로 묶는 이유는 BeginUpdate() 함수가 호출되면 ListView의 UI 갱신 작업이 멈춰버립니다.

 

 

ListView.BeginUpdate() 함수만 호출한 상태에서 EndUpdate() 함수를 호출하지 않으면 UI가 응답없음 상태인 것처럼

화면 갱신이 안되버립니다. 프로그램이 멈춰 버린것처럼 보이는거죠.

 

그래서 꼭 BeginUpdate() 와 EndUpdate()는 함께 호출되어야 하기 때문에 try finally 구문으로 묶에 확실하게

처리를 해주는 작업이 필요합니다.

눈치가 빠르신 분은 아셨겠지만, 프로그램이 UI(User Interface) 화면 갱신 작업시에 은근히 CPU 퍼포먼스를 잡아먹으면서

성능을 저하시키기 때문에, UI 갱신 작업을 멈춰두고 데이터를 모두 채운후에 마지막에 한번만

UI를 리프레쉬 시킴으로써 성능을 향상 시키는 방법입니다.

 

 

댓글

💲 추천 글