2012-02-09 3 views
6

나는 DoWork의 시간을 내 BackgroundWorker에 가지고 있습니다.작업중인 BackgroundWorker를 즉시 취소하는 방법은 무엇입니까?

backgroundWorker1.CancelAsync()으로 작업 취소를 시도 할 때마다 backgroundWorker1.CancellationPending이 보류 상태가되고 내 DoWork에서 다음 반복을 기다려야 작업을 취소하고 직접 수행해야합니다.

작업을 호출 한 직후 취소 할 수있는 방법이 있습니까?

+6

CancellationPending을 더 자주 확인 하시겠습니까? – dtb

답변

7

아니요. 일반적으로 스레드가 누출 될 수있는 리소스를 보유하고 있기 때문에 "즉시"스레드를 안전하게 종료 할 수 없습니다. 더 중요한 것은 잠금을 유지할 수 있습니다. 취소 깃발을 존중하고 최대한 빨리 안전하게 퇴장하도록 직원을 구조해야합니다.