May 9, 2009

C# using BackgroundWorker in WinForms

BackgroundWorker 가 무엇이냐? 말그대로 뒤에서 일하시는 분입니다. 언제쓰냐? 보통 복잡한 수식계산이나 이미지 프로세싱, 웹서비스호출, 데이터베이스 트랜젝션 등 작업을 실행하는 동안에는 사용자 인터페이스가 응답하지 않을 수 있습니다. 이러한 작업으로 인한 지연이 길어져 UI가 응답을 하지 않는 경우 BackgroundWorker 구성 요소를 사용하여 이러한 문제를 쉽게 해결할 수 있습니다.

도구상자에서 우선 ProgressBarBackgroundWorker 를 끌어다 놓습니다.

그리고 BackgroundWorker 의 속석중 비동기 부분을 모두 True 로 바꿔 주셔야 합니다.

다음은 코드입니다.

정말 간단하네요^^ㅎ

2 comments:

  1. 좋은 내용이네요~ 한가지 말씀드리자면 form의 load 이벤트 핸들러에 로드 완료라고 주석을 써놓으셨는데 실버라이트에서의 loaded 이벤트는 확실히 로드 완료가 맞지만, 윈폼에서 load는 '로드중'이 맞습니다.

    그래서 몇몇 로직에서는 오동작을 일으키기도 합니다!

    저는 그래서 폼의 로드완료 시점을 잡아내는 편법으로Application.Idle이벤트를 이용합니다.(로드 완료 시점을 잡는 다른 방법이 있을수도..)

    ReplyDelete
  2. @맨날맑음 - 2009/05/18 15:34
    그렇군요. 확인해보니 Load 완료 이벤트가 아니군요. 실버라이트에서 하던 그것과 다른 거 같네요^^

    지적 감사합니다.

    ReplyDelete