프로그래밍 TIP/.NET

[C#] BackgroundWorker 컨트롤을 접하다.

여름나라겨울이야기 2009. 2. 17. 21:08
728x90
자세한건 MSDN 에서..

BackgroundWorker 클래스를 사용하면 별도의 전용 스레드에서 작업을 실행할 수 있습니다. 
다운로드 및 데이터베이스 트랜잭션과 같은 시간이 많이 걸리는 작업이 실행되는 동안에는 
UI(사용자 인터페이스)가 응답을 중지한 것처럼 보일 수 있습니다. 
UI의 응답 속도를 높이려 하고 이러한 작업과 관련된 지연 시간이 길어지는 경우 
BackgroundWorker 클래스는 간편한 해결책을 제공합니다.

백그라운드에서 시간이 많이 걸리는 작업을 실행하려면 BackgroundWorker를 만든 
다음 작업의 진행률을 보고하고 작업이 끝날 때 알리는 이벤트를 수신합니다. 

프로그래밍 방식으로 BackgroundWorker를 만들거나 
이 개체를 도구 상자의 구성 요소 탭에서 폼으로 끌어 올 수 있습니다. 
Windows Forms 디자이너에서 BackgroundWorker를 만들면 
이 개체가 구성 요소 트레이에 나타나고 해당 속성이 속성 창에 표시됩니다.

백그라운드 작업을 설정하려면 DoWork 이벤트의 이벤트 처리기를 추가한 다음 
이 이벤트 처리기에서 시간이 많이 걸리는 작업을 호출합니다. 
작업을 시작하려면 RunWorkerAsync를 호출하고, 
진행률 업데이트에 대한 알림을 받으려면 ProgressChanged 이벤트를 처리합니다. 
작업이 완료될 때 알림을 받으려면 RunWorkerCompleted 이벤트를 처리합니다.

private void btnSearch_Click(object sender, EventArgs e)
{
     this.frm1 = new Form1();
     this.frm1.Show();
     this.backgroundWorker1.RunWorkerAsync();
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
     e.Result = this.fnSearch();
}

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
     this.frm1.Close();
}
반응형