반응형
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 을 상속받은 화면 클래스에서 쓴다.
반응형
'기타 언어 > C# & MFC' 카테고리의 다른 글
탐색기에 나와있는 간단한 TreeView 구현예제 (0) | 2009.04.12 |
---|---|
C# 에서 ActiveX Control 간단하게 만들어보기 (0) | 2009.04.07 |
C# 에서의 Thread class (0) | 2009.03.21 |
DB 검색 데이타 양이 많아 메인 화면이 멈추는걸 막고 독립적인 Thread 로 돌리고 싶을때 (2) | 2009.03.21 |
C# 에서 Thread Safe 의 2가지 사용법 (0) | 2009.03.19 |
delegate 간단하게 사용설명과 예제를 보여준다. (2) | 2009.03.18 |
Error while trying to run project : Unable to start debugging 잘못된 바인딩핸들입니다 - 에러 (0) | 2009.03.18 |
Local 컴퓨터에 있는 OLEDB Provider 를 알아오는 방법 (0) | 2009.03.17 |