티스토리 뷰



주의 : 자칫 폼을 죽일 수 있음. 14 - 5 - 8 일 작성한 Thread 예제 사용 가능

thread 사용에는 form 내부의 control에 접근하기 어려운 점들이 있다.

progress Bar 나 text Box 등 접근해서 처리했으면 하는 것들이 있는데

이를 해결하기 위해 C#에 존재하는 것이 BackGroundWorker 이다.

Thread 와 동일하게 Work, Complete 가 존재하며,

특별히 progressChanged 라는 것을 통해서

Progress Bar 를 좀 더 편하게 처리할 수 있다.



위 소스와 같이 BackGroundWorker 를 선언하고, Work(), ProgressB(), CompleteWork()를 각기 선언해준다.

Work() 는 실제로 BackGround 상에서 수행해야 할 작업을 넣어두면 된다.



위는 ReportProgress 를 통해서 bar 를 움직이는 work 이다.



ProgressChangedEvent 인 ProgressB 는



위와 같이 나타나며, backgroundWorker1.ReportProgress(i) 로 처리가 가능하다.

마지막으로 CompleteWork() 이며



으로 나타낼 수 있다. Cancell 과 Error 등의 상황으로 예외처리가 가능하고

마지막 else 는 정상적인 처리가 끝났을 때, 무언가 처리를 하고 싶을 때 하면 된다.

BackGroundWorker를 시작하고 싶을 때는



RunWorkerAsync() 를 통해서 시작하면~ 끗.
댓글
댓글쓰기 폼