Please Enable JavaScript!
Gon[ Enable JavaScript ]

반응형

List 에 대량의 데이터를 한꺼번에 추가하게 되면 그 반복실행이 끝나기 전에

화면은 멈추고 멈춰버린다. 스레드를 만들어 돌려도 다른 스레드에서 메인스레드에

포함되어있는 컨트롤을 접근하는거라 에러가 난다.

 

그럼 대량의 데이터를 올릴 때 화면이 멈추지 않고 실시간으로 데이터가

올라오는 모습을 보고 싶다면 어떻게 해야할까?

 

그것은 윈도우이벤트 큐에 처리해야할 이벤트가 있다면 처리하고 바로 리턴하게

하는 것이다. 이렇게 하지 않으면 이벤트 큐에 쌓아 두었다가 반복실행이 끝나게 되면

한꺼번에 실행하게 된다. 그럼 위와 같은 현상이 벌어지는것이다.

그 함수가 Application.DoEvents() 이다.

 

ArrayList list = new ArrayList();

for (int i = 0; i < 10000; i++)

{

    list.Add(Convert.ToString(i));

}

 

for (int i = 0; i < list.Count; i++)

{

    lstBox.Items.Add(Convert.ToString(i));

    System.Threading.Thread.Sleep(2);

    Application.DoEvents();

}

당연히 Application Form 을 상속받은 화면 클래스에서 쓴다.

반응형
Posted by 녹두장군1
,