1. BackgroundWorker는 ComponentModel 네임스페이스를 이용해야 쓸 수 있다.

2. BackgroundWorker bw = new BackgroundWorker(); 로 생성한다.

3. bw.WorkerSupportsCancellation = true; 설정을 해 준다.

4. bw.DoWork += new DoWorkEventHandler(bw_DoWork); 의 이벤트 핸들러를 생성한다.

5. bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);의 이벤트 핸들러를 생성한다.

6. DoWork 내부에 쓰레드에 이용할 내용을 첨부한다.

7. RunWorkerCompleted 내부에 쓰레드 종료시 이용할 내용을 첨부한다.

if (e.Error != null){} 에러 발생 시 처리
else if (e.Cancelled){bw.CancelAsync();}사용자에 의해 종료 되었을 시 처리
else{}정상 종료 되었을 시 처리

물론 이 BackgroundWorker를 실행하기 위해서는 bw.RunWorkerAnsync(); 처리를 해 줘야한다.

게시글 중 하나 이와 유사한 글이 있다. 그 부분은 단시 쓰는 방법에 대한 것만 나와있다.

쓰레드가 완료 된 처리 내용에 대한 것은 없는 껍데기에 불과 하다는 이야기다.

앞으로 좀 더 잘 알아보고 블로깅을 해야지.. ㅠ_ㅠ 이거 원..
[C#]BackgroundWorker. C# 2009. 1. 12. 14:20
private BackgroundWorker myWorker = new BackgroundWorker();

myWorker.DoWork += new DoWorkEventHandler(myWorker_DoWork);
myWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(myWorker_RunWorkerCompleted);
myWorker.RunWorkerAsync() ;

먼저 BackgroundWorker는 다른 영역의 쓰레드를 실행 시키게 해 준다.

즉 메인 영역의 쓰레드가 아닌 별개의 영역을 말한다.

여기서 생성된 쓰레드는 DoWork 이벤트 핸들러에 의해서 작업이 수행된다.

만약 DoWork의 작업이 완료되거나 취소될 경우는 그 다음 RunWorkerCompletedEventHandler가 실행되어 쓰레드의 종료 또는 취소 후의 처리를 해 준다.

myWorker.RunWorkerAsync() 는 다른 영역에서 쓰레드가 실행되게 해 준다는 뜻이다.