2011-04-20 6 views
2

가능한 중복 :
Killing a thread (C#)스레딩과 '정지'를 확인

나는 스레드를 스폰 시작했을 때, 스레드의 주요 프로세스는 몇 가지 방법을 실행하는 프로그램이 오히려 육감적 인 전화.

스레드를 생성 한 상위 클래스는 스레드를 중단 (또는 중지됨)으로 설정할 수 있어야하며 스레드는 변경 사항을 정상적으로 중지하고 정리/되돌리기해야합니다.

휘발성 bool을 설정하고 생성 된 스레드의 프로세스에서 스레드가 설정되었는지 확인하는 것 외에는 스레드를 중지/중지하는 좋은 방법이 있습니까? 스레드의 프로세스는 많은 메소드를 호출하고 몇 시간이 걸릴 수 있으므로 모든 단일 메소드 호출을 체크인하는 것은 약간 지루합니다.

내가 그렇게 제안

+2

여기서 '중단'이라는 단어는 사용하지 마십시오. 당신의 접근 방식은 괜찮습니다. Thread.Abort()는 위험합니다. –

답변

4

는 .NET 4 수신 확장을 사용할 .NET 3.5 그것의 백 포팅 버전에서 TPL을 사용하는 경우를 위해 오전 특정 스레딩 구현에 붙어 있지 않다, cooperative cancellation 시스템을 사용할 수 있습니다.이 시스템은 고전적인 부울 플래그 시스템을 개선하여 여러 병렬 작업 취소, 취소의 경우 연속 논리 허용, 프레임 워크가 발전함에 따라 새로운 BCL 기능을 지원합니다. 기본적으로 새로운 취소 모델을 지원합니다. 또한 취소되는 작업에서 취소기를 분리하므로 취소 권한이 부여 된 코드를 제어 할 수 있습니다.

관련 문제