C#에서 Thread내에 Parallel.Foreach 가 있는 경우 중단 방법

소프트웨어 개발/C#|2017. 1. 9. 12:59

GUI 환경에서 버튼을 클릭하는 등의 이벤트로 시간이 오래걸리는 작업을 구동하는 경우 쓰레드를 분리하여 개발하는 방법이 좋다는 방법은 C# 뿐만 아니라 안드로이드나 MFC등 GUI를 어느 정도 개발한 사람이라면 익숙할 것이라고 생각한다.


그렇다면 그 시간이 오래 걸리는 작업을 더욱 빠르게 하고 싶다면 병렬 처리가 가장 쉽고 빨리 적용할 수 있는 합리적인 방법이라고 생각한다.


구글링을 통하여 어찌어찌 병렬 For문을 적용하였지만 문제는 "클라이언트가 구동은 했지만 오래 걸리는 프로세스를 작업 도중에 중단하고 싶다"고 말했을때 발생하였다.


다음은 몇가지 코드를 조합하여 만든 메인 쓰레드와 분리된 다중 포문 작업 클래스와 그 작업을 중단 시키는 예를 콘솔 응용프로그램으로 구성하였다.

소스코드

메인 클래스 및 중단 클래스




시간이 오래걸리는 작업 클래스



참조


http://www.albahari.com/threading/part3.aspx

댓글()